Brown the aromatics: Heat the vegetable oil in a skillet over medium heat. When the oil shimmers, add in diced onion, minced garlic, minced ginger, and diced chili pepper (if using). Sauté 10-12 minutes, or until mixture is evenly golden brown. Use splashes of water as often as needed to deglaze when the mixture sticks to the pan.If you're in a hurry, you can sauté for only 3-5 minutes, but the flavor won't be as rich. Cook spices and tomato paste: Add in the spices. Add tomato paste, breaking it up with your spoon to coat the aromatics. (Add a splash of water as needed if things are sticking to the pan.) Cooking the tomato paste, stirring often, for another 2-3 minutes until it changes from bright red to a darker rusty color.
Cook the canned tomatoes: Pour in the crushed tomatoes along with 1/2 cup water. When the mixture starts to bubble, reduce heat to low, cover partially, and simmer for 8-10 minutes to cook out the raw flavor of the tomatoes.
Blend the sauce (optional): For a smooth, restaurant-style sauce, remove the pan from the heat. Allow to cool slightly, then transfer the mixture to a blender and blend until smooth. You can add a bit more water if needed to achieve the texture you like. Pour the entire mixture back into the skillet and heat over medium-low.If you prefer to leave the texture in your butter sauce, feel free to skip this step. Finishing touches: Add salt to preference, optional sugar, vegan butter, and coconut milk (or nondairy cream of choice) to the pan. Then add in the optional kasuri methi and the cooked tofu. Stir and allow the mixture to simmer for a few minutes to heat thoroughly.
Serve: Garnish with optional fresh cilantro and an extra drizzle of coconut milk. Enjoy with steamed basmati rice and homemade vegan naan.