Place the onions, tomatoes, ginger garlic paste, all spices, cashews, kasoori methi and sugar in a blender jar. Blend into a very smooth paste without adding any water.
Heat oil in a wide saucepan or saute pan over medium-low heat. Add the blended paste and mix it in. Bring it to a boil, then continue to cook the curry paste by covering the pot and letting the sauce simmer over low heat. Stir the sauce frequently, until most of the moisture has evaporated. This should take about 10-15 minutes.
Stir in the tofu cubes and vegetable stock or water. Mix. Bring to a boil, lower heat to a simmer, cover, and let the curry cook another 10 minutes. You should see darker pools of liquid on the surface of the curry when the sauce is cooked.
Add salt to taste. Stir in the butter and cilantro and turn off heat. Serve hot.
