In a large Dutch oven or heavy pot, melt the butter over medium heat. Add the cinnamon stick, cloves, bay leaf, and cardamom. Cook for about a minute, stirring constantly, until fragrant.
2 tablespoons unsalted butter, 1 3-inch cinnamon stick, 6 whole cloves, 1 teaspoon cardamom powder, 1 bay leaf
Add the chopped onion and cook for about 5 minutes, until soft and translucent. Stir in the garlic and ginger, and cook for another minute.
1 cup yellow onion, 5 garlic cloves, 1 tablespoon fresh ginger
Add the lamb pieces and season with salt. Cook for 6–8 minutes, stirring occasionally, until the meat is browned on all sides.
3 pounds boneless lamb shoulder, 1½ teaspoons salt
Stir in the garam masala, paprika, and curry powder, coating the lamb evenly. Add the tomato paste and cook for 2–3 minutes, stirring, until it deepens in color and becomes fragrant.
4 teaspoons garam masala, 4 teaspoons paprika, 1 tablespoon curry powder, ¼ cup tomato paste
Pour in the chicken stock and bring to a boil. Reduce the heat to low, cover, and let it simmer gently for about 1 hour 45 minutes, or until the lamb is tender.
1½ cups chicken stock
In a small bowl, whisk the yogurt with about ¼ cup of the hot cooking liquid to temper it. Slowly stir the yogurt mixture back into the pot.
½ cup plain full-fat yogurt
Cover and simmer for another 15–20 minutes, until the sauce is rich and the lamb is very tender.
Remove the cinnamon stick and bay leaf. Taste and adjust seasoning if needed.
Serve hot with basmati or pilau rice, naan, and raita. Garnish with fresh cilantro if desired.
¼ cup fresh cilantro