Preheat your oven to 350°F / 175°C. Prepare the cauliflower by removing the outer leaves and slicing a small amount from the base so it sits flat. Thoroughly rub the entire head with oil, making sure to get into all the crevices, and season generously with salt and pepper.
Place it in a lidded ovenproof casserole dish, cover, and bake for 45 minutes.
While the cauliflower bakes, prepare the sauce. Melt the butter in a frying pan over medium heat.
Once bubbling, add the onions and sauté for about 10 minutes until soft and golden.
Stir in the ginger and garlic and cook for another 2 minutes until fragrant.
Add the tomatoes to the pan, crushing them with your hand or a spoon as you pour them in. Fill one of the empty tomato cans three-quarters full with water and add that to the pan.
Bring to a simmer and cook for 5 minutes.
Stir in the ground almonds, cinnamon, kasoori methi, cloves, ground red chile, and 1 teaspoon (5 ml / 0.2 fl oz) of salt.
Continue to simmer for another 5 minutes to allow the flavors to meld, then remove the sauce from the heat.
After 45 minutes, check the cauliflower by inserting a skewer into the stem; it should be partially cooked but still firm. If it's very hard, return it to the oven for another 10-15 minutes.
Once ready, pour the sauce all over the cauliflower, ensuring it's well-coated. Return the dish to the oven, uncovered, and bake for a further 20 minutes.
While the cauliflower finishes baking, toast the flaked almonds in a dry frying pan over medium heat for a couple of minutes until lightly golden.
Set aside for garnish.
Check the cauliflower for final doneness; a skewer inserted into the center should meet little resistance.
Remove from the oven, taste the sauce, and adjust the seasoning with more salt or red chile if needed.
Garnish with the toasted almonds and fresh cilantro.
Serve hot with rice, dal, and a fresh salad.
Let the finished dish rest for 5-10 minutes after removing it from the oven. This allows the flavors to meld together beautifully before serving.