Make the spice coating. In a large bowl, whisk together the lemon juice, cornstarch, cumin, 1/2 tsp turmeric, 1/2 tsp garam masala, and 1/2 tsp salt. Set aside.
Sear the cauliflower. Heat 1 Tbsp olive oil in a large skillet over medium-high heat. Add the cauliflower florets and cook, tossing occasionally, until browned in spots and beginning to soften - about 7 to 8 minutes.
Coat the cauliflower. Reduce heat to medium. Transfer the seared cauliflower to the bowl with the spice-cornstarch mixture and toss to coat evenly.
Cook the cauliflower again. Return the coated cauliflower to the skillet. Cook another 7 to 8 minutes, until charred in spots and crisp-tender. Transfer to a bowl and set aside.
Build the sauce base. In the same skillet, heat the remaining 1 Tbsp olive oil and the butter over medium heat. Add the onion and cook until soft and translucent, about 8 minutes.
Add aromatics. Stir in the garlic, ginger, and tomato paste. Cook for 2 minutes, stirring frequently, until fragrant and the tomato paste darkens slightly.
Bloom the spices. Add the remaining 1/2 tsp turmeric, 2 1/2 tsp garam masala, 1 tsp salt, paprika, cinnamon, and cayenne (if using). Stir and cook for 1 minute.
Add liquids. Pour in the tomato sauce and vegetable broth. Stir well and bring the mixture to a boil.
Simmer with cream and cauliflower. Reduce to a low simmer. Stir in the cream (or coconut milk). Return the seared cauliflower to the skillet. Simmer uncovered, stirring occasionally, until the sauce thickens - about 15 minutes.
Serve. Spoon over basmati rice. Garnish with fresh cilantro and a dollop of yogurt. Serve with naan and a squeeze of lemon if desired.