Combine all marinade ingredients. Pat lamb shanks dry with a paper towel, and generously coat with marinade and let sit covered in the fridge for at least 1 hour (can be marinated overnight).
Preheat oven to 180c (160 fan forced). In small pan, toast coriander seeds and cardamom pods on high until you can start to hear it sizzle and it becomes fragrant – approx. 1 minute, tossing constantly. Using a pestle and mortar (or zip lock bag and rolling pin), grind until coriander seeds crushed and start to resemble a powder. Cardamom pods should burst open.
In an oven-proof pot (such as a Dutch oven), heat vegetable oil on medium-high. Brown lamb shanks for 2 minutes on each side. Remove shanks from heat, and add in garlic, curry leaves and grated ginger. Cook, stirring for 1 minute. It should be very fragrant. Add in onion and cook until translucent. Add chilli flakes, ground coriander seeds and cardamom pods and stir.
Turn the heat up to high momentarily, and add in ½ of the chicken stock to deglaze the pot, scraping the bottom of the pot with a wooden spoon as you go. Turn the heat back down to medium-high, then add in remaining stock, tinned tomatoes, water, garam masala, and curry powder. Crush the whole tomatoes with the back of the wooden spoon. Add lamb shanks back in, stir to coat, then place in oven covered for 2 hours, stirring every 45 minutes to baste the shanks in the sauce. Cook until meat is tender and begins to just fall of the bone, but still remains intact. Season sauce with salt and pepper to taste.
To make the green herb yoghurt sauce, combine all ingredients and stir well. Serve lamb shank curry on a bed of basmati rice with generous dollops of yoghurt sauce. Add additional coriander, fried curry leaves, and naan if desired.