Heat ghee or mustard oil in a heavy-bottomed Dutch oven over medium heat.
Add bay leaves, green cardamom, black cardamom, cloves, and cinnamon stick. Sauté for 1 minute until fragrant.
Add sliced onions and cook for 10 to 12 minutes until deep golden brown.
Stir in minced garlic and grated ginger, cooking for 1 additional minute.
Add the lamb cubes in batches, searing on all sides for about 5 to 7 minutes until well browned.
Lower the heat and add Kashmiri chili powder, ground fennel, ground ginger, coriander, cumin, turmeric, and salt. Stir continuously for 1 minute to toast the spices.
Add the whisked yogurt one tablespoon at a time, stirring constantly to prevent curdling.
Pour in 1 cup of water and bring the mixture to a gentle simmer.
Cover the pot, reduce heat to low, and cook for 60 to 90 minutes, stirring occasionally, until the lamb is fork-tender and the oil separates from the sauce.
Garnish with fresh chopped cilantro and serve hot with basmati rice or naan bread.