01 - Heat oil or ghee in a large heavy-based pot over medium heat. Add cloves, cardamom pods, cinnamon stick, and bay leaf. Sauté for 1 minute until fragrant.
02 - Add chopped onions and cook, stirring frequently, until golden brown, approximately 10 minutes.
03 - Stir in minced garlic and grated ginger; sauté for 1 minute until aromatic.
04 - Add chopped tomatoes and cook for 4-5 minutes until softened and breaking down.
05 - Sprinkle in ground coriander, cumin, turmeric, cayenne pepper, salt, and black pepper. Cook for 2 minutes, stirring continuously to develop flavors.
06 - Add beef cubes, turning to coat thoroughly in the spice mixture. Sear for 4-5 minutes until browned on all sides.
07 - Pour in stock and bring to a simmer. Reduce heat to low, cover, and cook for 1 hour, stirring occasionally.
08 - Stir in coconut milk and yogurt. Continue to simmer, uncovered, for 30-40 minutes until beef is tender and sauce has thickened.
09 - Add garam masala and green chilies. Simmer for a final 5 minutes to meld flavors.
10 - Remove from heat, discard whole spices, adjust seasoning as needed, and garnish with chopped cilantro before serving.