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 onions and cook, stirring often, until golden brown, about 10 minutes.
03 - Stir in garlic and ginger, sauté for 1 minute until aromatic.
04 - Add chopped tomatoes and cook for 4-5 minutes until softened.
05 - Sprinkle in ground coriander, cumin, turmeric, cayenne pepper, salt, and black pepper. Cook for 2 minutes, stirring continuously.
06 - Add beef cubes, turning to coat well in spices. 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 5 minutes.
10 - Remove from heat, discard whole spices, and adjust seasoning as needed. Garnish with chopped cilantro.