Heat 1 teaspoon of vegetable oil in saucepan. Add the meatballs to the pan in a single layer and brown them on all sides. Remove to a plate and set aside.
While the meatballs are browning, blend the tomatoes, onions, ginger and garlic in the blender. Don't add any liquid to blend--there is enough liquid in the tomatoes and onions.
To the saucepan where you browned the meatballs, add the remaning 1 teaspoon oil.
Add the mustard seeds and asafetida and wait for the mustard to sputter.
Add curry leaves and green chili peppers, if using. Stir-fry for a few seconds.
Add the tomato onion paste and powdered spices--turmeric, cayenne, paprika, if using, and ground coriander. Mix well. Let the paste cook down until most of the liquid has evaporated and it's a few shades darker.
Add half the coconut milk (stir the milk in the can first) and a cup of water. Bring to a boil and cover the pot. Let the sauce cook about 10 minutes or until you see specks of oil on the top. The sauce should not have a raw or bitter flavor.
Lower the heat, add the garam masala and the remaining coconut milk. Check for salt.
Place the meatballs in the curry sauce and turn around to coat. Let the coconut milk warm through and turn off the heat before it comes to a boil.
Garnish with cilantro. Serve hot.