In a pot, bring some water to a boil, add the soy cubes, and cook for 10-15 minutes.
Drain well and transfer to a bowl. Add the ginger, garlic, garam masala, and coconut oil, then set aside to marinate for 30 minutes.
In a pan, sauté the onion and garlic in 1 Tbsp of coconut oil.
Transfer to a blender with the tomatoes, ginger, and all the spices, then blend into a smooth paste.
Add the remaining oil to the pan and fry the soy cubes for 3-5 minutes, stirring constantly.
Add the sauce and coconut milk, then cook for 5-7 minutes.
Season with salt to taste.
Serve with fresh cilantro and lime.
Notes
Store leftovers in an airtight container in the fridge for up to 3 days and reheat gently with a splash of coconut milk. The soy cubes can be swapped 1:1 for pressed tofu, cauliflower florets, or chickpeas.