Heat oil in a large frying pan over medium-high heat.
Add cinnamon stick, cloves, cardamom pods and bay leaf. Saute, stirring, for 1 minute or until aromatic.
Add onions. Saute, stirring occasionally, for about 2-3 minutes or until browned.
Add beef. Stir fry for about 4-5 minutes or until slightly browned.
Add ginger and garlic. Saute, stirring occasionally, for about 2 minutes or until fragrant.
Add ground turmeric, red chili powder, ground coriander and garam masala. Saute, stirring, for about 1 minute or until fragrant.
Add tomatoes. Pour in water. Season with salt.
Cook, covered, for about 1 hour or until beef is tender.
Add cream and coriander leaves (cilantro). Stir to combine.
Simmer for about 5 minutes.
Garnish with chopped coriander leaves (cilantro). Serve with naan or rice.