Prepare the tofu: If using tofu, press it for 10-15 minutes to remove excess moisture, then cut into cubes. For extra flavor, you can lightly pan-fry the tofu in a bit of coconut oil until golden brown. If using chickpeas, simply rinse and drain them.
Sauté the aromatics: In a large pan, heat the coconut oil over medium heat. Add the chopped onion and cook until soft and translucent (about 3-4 minutes). Stir in the minced garlic and grated ginger, cooking for another minute until fragrant.
Add the spices: Sprinkle in the cumin, coriander, garam masala, turmeric, paprika, and cayenne pepper. Stir well to coat the onions and toast the spices for about 30 seconds.
Simmer the sauce: Pour in the crushed tomatoes, tomato paste, maple syrup, salt, and black pepper. Stir everything together and let it simmer for about 5-7 minutes, allowing the flavors to meld.
Stir in the coconut milk: Reduce the heat to low and add the coconut milk or cashew cream. Stir well and let the sauce thicken for another 3-5 minutes.
Add the tofu or chickpeas: Gently fold in the cubed tofu or chickpeas, ensuring they’re well coated in the sauce. Let everything simmer for another 5 minutes so the flavors can blend.
Serve and garnish: Remove from heat and garnish with fresh cilantro. Serve hot with basmati rice or naan for a complete meal.