In the same pan or Dutch oven that you fried the tofu, heat a teaspoon of oil over medium heat. Add the whole spices: peppercorns, cinnamon bark, cloves and cardamom. Saute for a minute.
Add the onions along with a pinch of salt. Sauté the onions until soft, not brown, 2-3 minutes.
Add the tomatoes, tomato paste, ginger garlic paste, ground coriander, ground cumin and Kashmiri red chilli powder or paprika to the pot. Mix and cook, covered, until the tomatoes break down and are very soft, about 3-4 minutes.
Stir in the cashews and continue sauteing for a couple of minutes.
Add a cup of water, mix, and turn off heat. Once the mixture has cooled a little, remove it to a blender.
Blend it into a smooth sauce. You can also do use an immersion blender to blend the curry in the pot itself. Pour the blended sauce back into the pot. Stir in sugar and kasoori methi.
Bring the sauce to a boil over medium heat. Continue to cook for 5 minutes, stirring frequently. The gravy will thicken, so add another cup of water to thin it out. Stir in the tofu cubes and warm through for 2-3 more minutes.
Stir in the vegan butter, add cilantro, and turn off heat.