Toast the Whole Spices: Heat the oil in a large pot over medium heat. Add cinnamon, cardamom, bay leaf, and dried chili. Fry for about 1 minute until fragrant, then remove them and set aside.
Brown the Meat: Add the lamb or chicken pieces to the pot. Cook 4–5 minutes, turning to brown lightly on all sides. Transfer to a plate.
Prepare the Base: Add chopped onion, garlic, green chili, and ginger. Cook about 5–6 minutes, stirring, until the onion softens.
Spice and Tomato: Sprinkle in turmeric, coriander, and cumin. Stir 30 seconds. Add diced tomato and cook 2 minutes.
Combine: Return the meat and whole spices to the pan. Stir in the yogurt and season with salt.
Simmer: Pour in about 500 ml (2 cups) water. Bring to a boil. Cover, reduce heat, and simmer: Lamb: about 1½ hours Chicken: 40–50 minutes
Finish with Spinach: Add the cooked spinach. Stir well and cook uncovered 5–10 minutes until the sauce thickens and the oil starts to separate slightly.
Serve: Sprinkle with fresh cilantro or parsley and serve hot with rice or flatbread.