In a large wide pot or slighly deep pan, heat up the oil on medium heat. Temper the oil with all the whole spices and saute for 10-12 seconds.
Add the onions next and saute on medium heat for 6-8 minutes untill soft and lightly browned. Dont darken.
Next add the ginger garlic paste and saute for 10-15 seconds till the raw smell goes away.
Add all the powdered spices next - cumin, coriander, tumeric and red chilli. Add 2-3 tbsp water and saute the spices in oil for a minute or so.
Add the tomato puree next and cook for 6-8 minutes untill you see oil bubbles seperating. If the masala is looking too dry, add a little warm water at this point.
Add the ground almond and bell peppers next and salt the curry. Let peppers cook in the tomato masala for about 2-3 minutes.
Next add the cashew yogurt and mix well with the masala.Check and adjust the salt. Let simmer for 2-3 minutes taking care that bell peppers dont soften too much.
Add the tofu cubes next and using a spatula, very carefully combine them with everything. At this point if you want, add warm water to adjust the consistency of the masala. Dont mix too much else tofu will break. Avoid cooking on high heat.
Let everything simmer for 5-6 minutes on low medium heat. Finish off with garam massala and kasuri methi. Combine gently. Switch off the flame. Let rest for 20 minutes before serving.