Heat the vegetable oil in a wide, high-rimmed skillet set over medium heat. Once hot, fry the onion, garlic and ginger for a few minutes until softened and fragrant. Add the salt, garam masala, cumin and pinch of sugar. Stir and continue to fry for about a minute. Toss in the florets and stir. After another minute, pour in the can of tomatoes and one can of water. Add the coconut milk. Bring to a gentle simmer, reduce the heat and leave to cook, uncovered, for 15 minutes. Stir every few minutes. Be sure the liquid does not boil as the coconut milk may separate. You just want a nice gentle simmer so the cauliflower cooks and some of the liquid reduces.
Once the cauliflower is cooked (a knife should pierce easily through the florets), turn off the heat. Stir in the spinach so it wilts. Adjust the salt to your liking. Serve over a bed of basmati rice.