Heat 2 tablespoons of butter and 1 tablespoon of oil in a large Dutch oven (or large saute pan) over medium heat. Add the chopped onions and cook, stirring, until softened and translucent (7 to 8 minutes).
Add the remaining garlic, ginger, garam masala, cumin, and cayenne and cook, stirring, until fragrant (around 2 minutes). Transfer to a small bowl.
Into the Dutch oven, add one tablespoon of oil and the marinated tofu chunks. Turn the heat up and cook flipping as they start to turn golden (3-4 minutes).
Add the onions back into the pan along with the crushed/ground tomatoes, bring to a boil, then reduce the heat and let simmer covered for 15 minutes.
Stir in ½ cup cashew cream. Season with salt and pepper. Taste and adjust seasonings to suit your taste.
Add more cashew cream for richer creamier gravy.
If the tomato-cream sauce is too thick, add water/veggie broth ¼ cup at a time until desired consistency is met.