Heat the ghee or oil in a heavy-bottomed Dutch oven over medium heat. Add the cardamom pods, cloves, cinnamon stick, and bay leaves, frying for 1 minute until fragrant.
Add the finely chopped onion and sauté for 10-12 minutes until deeply golden brown.
Stir in the minced garlic and grated ginger, cooking for an additional 2 minutes.
Toss the lamb shoulder cubes into the pot and sear until browned on all sides, about 8-10 minutes.
Reduce the heat to low. Stir in the Kashmiri red chili powder, ground coriander, cumin, fennel, and salt, ensuring the lamb is coated evenly. Cook for 2 minutes.
Slowly whisk the yogurt into the pot, a spoonful at a time, to ensure it doesn't curdle.
Pour in the hot water or lamb stock. Bring the mixture to a gentle simmer, cover, and cook on low heat for 1.5 to 2 hours until the lamb is tender.
Remove the lid during the last 15 minutes of cooking if the sauce needs to thicken.
Garnish with fresh cilantro and serve hot over steamed basmati rice or with naan bread.