In a large pot or wok on medium-high heat, add oil and onions and fry until translucent.
Add ginger-garlic paste and let it sauté until it slightly browns.
Then add all following spices - Kashmiri powder, red chili powder, coriander powder, cumin powder and salt - mix and add 3-4 tablespoons of water (to prevent the spices from burning).
Keep sauteing the spices for 1 minute and add 3-4 tablespoons of water regularly. This will give a beautiful color to the curry.
Then add the yogurt and immediately stir for 1 minute. Make sure that you do not lower the heat or the yogurt will curdle.
Cover and let it cook for 1 minute more until you see the oil separating at the sides.
At this point, add the tomato puree and again let it cook until the oil separates again (about 45 seconds).
Now, add 2 cups of hot water and let it come to a rolling boil.
Add in the meatballs along with their juices.
Let it cook UNCOVERED for 20-25 minutes.
Finally, switch off the heat.
Sprinkle garam masala and cover for 5 minutes. This will further enhance the aroma of the dish.
Serve hot with naans, rotis or rice.