Press tofu for 15 minutes. Move onto preparing the gravy in the mean time. When the tofu is pressed, cut it into ½-inch thick rectangles and mix with a little red chili powder and salt.
Add 1 tbsp butter to the pan over medium heat. Then add ginger, green chilis, and ground cardamom (from 2 green cardamoms). Stir for 1 minute before adding onions. Cook for 5 minutes, stirring frequently until onion appears translucent.
Add cashews and tomatoes. Increase heat to medium-high and cover. Let this cook for 7-8 minutes on medium-high. Uncover at least once in the middle of this period to stir.
Add yogurt and cook uncovered over medium heat for 5 minutes. Remove the pan from heat. Wait for it to cool slightly before blending its contents. Add ¼ cup water if necessary for blending.
While the gravy cools, pan fry the tofu in avocado oil (alternative: see note 1). Fry for about 3-4 minutes per side, so each side has browned but is not too crisp.
Add another 1 tbsp of butter to a pan on medium-low and fry red chili powder, kashmiri lal, garam masala, turmeric, and kasoori methi (if using) until fragrant, about 1 minute.
Pour the gravy into the pan. Use ¼ cup water to wash out the remains of the blender. Add salt, maple syrup, and a little more water if necessary. Cook for 2 minutes over medium-low, until you’ve reached your desired gravy texture. Add the tofu. Cover and cook for two minutes before taking it off the heat.