Drain the tofu and pat dry with a tea towel to remove excess moisture. Cut into bite sized cubes. Add the cornstarch/cornflour to a small bowl along with salt and pepper. Gently toss the tofu in the bowl to coat.
Heat 1 tbsp of the oil in a frying pan over a medium/high heat and fry the tofu until golden on all sides, about 5 minutes, turning halfway through. The cornflour/cornstarch absorbs moisture and gets the tofu nice and crispy. Set aside.
Heat the remaining 1 tbsp of oil in the pan over a medium heat. Add the onion and cook for 5 minutes or until soft but not browned.
Add the garlic, cumin, garam masala, turmeric and cayenne and cook for a further minute, stirring.
Stir in the tomatoes and water, bring to the boil and simmer for 5 minutes. Taste and season with salt and pepper, and add more cayenne if you want it hotter.
Stir in the spinach to wilt, then gently stir in the fried tofu (or to keep the tofu really crispy, just set it on the top). Serve with rice, naan etc..
