Mix the garlic, ginger, cumin, coriander, chilli powder and paprika in a large bowl.
Add the meat and mix well till all the meat is coated in the spices.
Cover and leave in the fridge overnight or for at least 3 hours.
Take the marinated meat out of the fridge and allow to return to room temperature.
Heat the ghee/oil in a large saucepan over a low heat.
Add the onions and sauté for about 10 minutes or until lightly brown. Be careful not to burn them.
Remove the onions from the pan, leaving the ghee/oil in the pan.
Add the cloves, cardamon, bay leaves and cinnamon and gently fry for a minute.
Increase the heat to high and add the meat and onions, mix well and fry for a few minutes.
Reduce the heat and cover the pan.
Allow to cook undisturbed for 15 minutes.
Put a kettle on to boil.
Take off the cover and increase the heat. Fry for another 5 minutes, allowing the sauce to reduce and the oil to separate.
Add 125ml (1/2 cup) of water from the kettle, cook for about 10 minutes, until the sauce reduces again and the oil separates.
Add 250ml (1 cup) of water from the kettle, partially cover and cook on a reduced heat for an hour or until the meat is tender.
Keeping the heat low, stir in the yogurt and mix gently to combine. Add the saffron, if using.
Sprinkle over the garam masala and stir.
Season with salt to taste. Recipe reprinted with permission of The Muddled Pantry. To see more recipes, click here.