For gravy, I ground 3 large tomatoes to get 1 cup puree. Depending on the size of the tomatoes adjust the number of tomatoes using.
Heat a pan with oil and temper with the whole garam masala followed by jeera. Add chopped ginger and just give it a fry. Add the pureed tomato.
Add the garam masala powder, red chilli powder, turmeric, salt and coriander powder. Mix and cook covered in medium flame with a lid as it will splutter a lot.
Mix in between to avoid burning. Once water evaporates, you can continue cooking without lid. Add more oil if need and fry.Once oil oozes out and masala becomes thick, add milk little by little and mix in low flame.
Do not add all at once, keep stirring and add little by little. Lastly add cream also same way little by little. Never let the gravy boil on high flame at any point as it would lead to curdling.
Lastly add coriander leaves and koftas. Do not mix. Let it be as such.