In a heavy bottom cooking pot (I use enamaled cast iron 3 qt balti dish), heat up the mustard oil on low medium heat until it is a bit smoky.
Temper the hot oil with whole spices. Then,add the garlic paste and ginger paste. Fry for few seconds taking care not to burn.
Add the crushed onions next and for the next 6-8 minutes, fry them until browned.
To the browned onions, add all the ground spices (except garam masala). Add ¼ cup water and on low heat, fry the spices with onions. Frying onions and spices together with water blooms their flavor and the taste of the gravy is intensified.
Next, add the tomato puree and fry until you see tiny bubbles of oil separating. Takes about 3-5 minutes on low medium heat.
Add the beaten yogurt next and immediately stir for 1-2 minutes or until yogurt becomes part of the masala base. Continously stirring after adding it prevents the yogurt from curdling.
Fry the yogurt for 2-3 minutes or until you see that the oil separates again. At this point, add ½ cup of water to the masala base and bring to a slow boil.
Reduce to low flame and to the simmering gravy ,slowly add the chicken kofta in a single layer.
Chicken kofta cook in about 12-15 minutes. Let koftas simmer in the gravy on low flame.
Keep aside cooking spoon now. We are not going to stir the curry using a spoon. Rather, carefully pick up the cooking pot and swirl around to stir the chicken meatballs every now and then. This prevents the kofta from breaking and the swirling makes sure that they cook evenly.
Towards the last few minutes, cover the pot to make sure that they are cooked through.
At this point, if desired, add a splash of coconut cream, heavy cream or full-fat coconut milk for creamy curry meatballs.. Simmer for additional 2-3 minutes.
Finish chicken kofta curry with garam masala, crushed kasuri methi and chopped fresh cilantro leaves. Let rest for 10-15 minutes before serving.