Dry roast cinnamon, green cardamom, black cardamom, cloves, black peppercorns, and poppy seeds in a pan for 2-3 minutes until fragrant.
Let the roasted spices cool, then grind them with almonds or cashews into a fine powder. Set aside.
Heat ghee in a heavy-bottomed pot over medium heat. Add sliced onions and fry until golden brown and crispy.
Add ginger and garlic paste to the pot. Sauté for 2-3 minutes until the raw smell disappears.
Add lamb pieces to the pot and brown well on all sides, about 8-10 minutes.
Mix in the ground spice powder, coriander powder, red chili powder, nutmeg powder, and mace powder. Cook for 2 minutes.
Gradually add the whisked yogurt while stirring continuously to prevent curdling. Cook on low heat for 10 minutes.
Pour in water, bring to a boil, then reduce heat to low. Cover and simmer for 45-60 minutes until lamb is tender.
Stir in saffron milk and kewda essence in the last 5 minutes of cooking.
Adjust seasoning with salt and serve hot with basmati rice or naan.