Place 3 tablespoons (45 ml / 1.5 fl oz) of the butter or oil in a deep skillet over medium-high heat.
Once hot, add the onion, garlic, ginger, and chile.
Cook, stirring occasionally, until the onion softens, about 5 minutes.
Stir in the garam masala, chili powder, and sugar, and season with salt and pepper.
Cook, stirring constantly, until the spices become very fragrant, about 1-2 minutes.
Add the chopped tomatoes and cook, stirring frequently, until they begin to release their liquid and break down, about 3 minutes.
Stir in the cream (or coconut milk) and cilantro.
Bring the mixture to a boil, then reduce the heat to maintain a gentle simmer.
Cook, stirring occasionally, until the tomatoes have broken down completely and the sauce has thickened, about 30 minutes.
Taste and adjust seasoning if needed.
Just before serving, prepare the tarka.
Place the remaining 1 tablespoon (15 ml / 0.5 fl oz) of butter or oil in a small pan over medium-high heat.
When hot, add the cumin and mustard seeds. Toast them until they become fragrant and begin to pop.
Immediately spoon the hot tarka over the sauce and serve.
Don't skip the tarka! This final tempering step is crucial for the authentic flavor and aroma of the dish. Be ready to pour it over the sauce as soon as the seeds start to pop to avoid burning them.