Heat 1 tablespoon ghee or oil in a heavy-bottomed saucepan, or dutch oven, over medium heat and add the cumin seeds. When they crackle after a minute or two, add asafetida (if using) and stir for 30 seconds. Immediately add the onion and sauté until translucent; about 5 to 7 minutes.
Add the ginger garlic paste and sauté for about 30 seconds to a minute or two untile the paste no longer smells raw, stirring constantly. Immediately add turmeric, cumin, coriander, and ground chili and cook for 2 minutes.
Add tomato puree, and cook for 6 minutes, until the mixture darkens slightly and becomes a thick paste. Add a tablespoon or more of water, if the masala is sticking to the bottom of the pan.
Season with salt and garam masala and add water if your sauce is too thick. I often add 1/4 cup or more to have a good consistency.
Add your vegetables or meat, and cook over medium heat until they are done. The time will vary depending on what vegetables or meat you are using, and if they have been precooked. If you have time, allow the curry to sit over a very low flame for 5 minutes to round out the flavors.
Taste for enough salt, garam masala, ground chili, or mellow it out with a tablespoon, or two of cream, or yogurt if you feel it is needed. Garnish with a generous sprinkling of coarsely chopped fresh cilantro, a swirl of yogurt, and serve with a simple rice and your favorite Indian bread.
Keeping: the sauce will keep in your refrigerator for a week, or in the freezer for 6 months.