Heat oil in a large saucepan (large enough to comfortably accommodate 4 lamb shanks). Add cassia bark, cardamom, cloves and sauté for half a minute. Add sliced onions and sauté on medium-high heat, stirring occasionally, until golden brown.
Add the lamb shanks and sear over high heat for five minutes, stirring constantly.
Add ginger & garlic paste, stir well for a couple of minutes, add the turmeric powder, chillipowder and salt; lower the heat and sauté for a further five minutes.
Next add the yoghurt and sauté for 5 minutes over high heat.
Add the chopped tomato, stir well and simmer for 15 minutes or until the chopped tomato begins to break down. Add enough hot water to cover the shanks and bring to a boil, cover with a lid, simmer and cook for about 90-120 minutes or until the lamb is tender.
Remove the shanks using a pair of tongs and leave to cool.
Strain the sauce into a container. (Squeezing all the juices out of the residue) Add the grated nutmeg, mace powder and garam masala and cook the strained sauce over a medium flame, stirring occasionally, for a further 30 minutes or until reduced to the desired consistency. Check seasoning and leave to cool.
If you wish to prepare this dish a day or two ahead, at this stage, leave the cooked shanks and the sauce in the refrigerator until required.
To finish, remove the layer of fat that forms over the sauce (when refrigerated) transfer the sauce to a large saucepan and bring to a boil.
Microwave the shanks for 4-6 minutes and add to the sauce. Cover and simmer for a further 20 minutes.
Transfer to a serving platter, sprinkle garam masala powder (optional) and chopped, washed coriander leaves. Serve hot, preferably with steamed rice/ pulao or naan.