Bring a large pot of water to boil. Meanwhile, fill a large bowl with cold water and a few ice cubes and set near the pot. Put tomatoes in boiling water for 10 seconds each, then use a slotted spoon to transfer them to ice water. Drain tomatoes and pat dry. Core and peel tomatoes (leave them whole). Set aside.
In a large frying pan, heat oil over high heat. When hot, add cumin seeds and mustard seeds and reduce heat to medium-high. Cover and cook until seeds start to pop, about 2 minutes. Remove cover and add butter. When butter is melted, add turmeric and cayenne and cook, stirring, until fragrant, about 1 minute. Add garlic, chiles, and salt. Cook, stirring, until fragrant, about 1 minute. Reduce heat to low. Add yogurt and stir in one direction until smooth. Add tomatoes. Gently stir to coat with sauce. Cook until tomatoes are just warm, about 5 minutes. Garnish with cilantro if you like and serve warm, with plenty of sauce.
Note: Nutritional analysis is per tomato.