In a skillet, dry-roast the spice mix ingredients: the coriander seeds, dry chili pepper, cumin seeds and fennel seeds, until a couple of shades darker and fragrant. Remove to a spice grinder or blender and process to a coarse powder. Set aside.
Heat the oil in a wok or a large saucepan. Add the cumin seeds and when they start to turn color, add the tomatoes. Saute the tomatoes until they are fully mashed and pulpy.
Add the ginger, shallots and coriander leaves along with the coriander powder and garam masala powder and continue to saute for another five minutes. Add in the tofu cubes and 1 tbsp of the prepared spice mix and mix well.
Add the cashew cream and stir to mix. Check for salt. Let the sauce come to a boil, then turn off the heat. If you want a saucier sauce, add more water or vegetable stock to get it to the consistency you like.
For a nut-free version, use 1/2 cup of canned coconut milk instead of cashew cream, but this will slightly change flavor.