Heat the oil in a pan, then add the whole spices – cumin seeds, peppercorns, cloves, bay leaves, cinnamon stick and cardamoms.
When the cumin seeds begin to sizzle, add the curry sauce onion, ginger and garlic.
Fry until golden to dark brown. Be patient, this stage can take a while.
Add the chopped tomatoes, tomato purée, ground coriander, turmeric, chilli powder, paprika and salt. Cook until the oil separates or the mix looks shiny.
Add the water, bring to the boil and then turn down to a simmer.
Add the meatballs one by one to the simmering (not boiling) sauce.
Allow to simmer without the lid for about 20 minutes or so (closing the lid sometimes makes the meat balls break up), gently turning the meatballs over and shaking the pan from time to time.
When meat balls are ready, any oil will separate and float to the top of the sauce. Add half the coriander leaves and garam masala, stir gently and transfer to a serving dish.
Garnish with remaining coriander and serve hot with freshly made chapattis, steamed rice or plain pilaf rice.