Preheat oven to 425°.
Lay tofu on a plate and place paper towels on top.
Place heavy pot on top of paper towel to squeeze out excess liquid from tofu. Let sit 10 minutes.
Dice onion, bell pepper, and garlic and set aside.
Dice tofu into ½ inch cubes.
Line baking sheet with parchment paper and spread tofu in even layer on sheet.
Bake in oven for 25 minutes.
While tofu is baking, heat large pot or Dutch oven over medium heat and add oil.
Sauté diced onion and bell pepper for 10 minutes. Add garlic and sauté 1 minute.
Add tomato paste, ginger paste, garam masala, brown sugar, cayenne pepper, turmeric, cumin, coriander, and salt. Mix will and cook for 4 minutes.
Add tomatoes and water. Bring to a boil and reduce to simmer and cook for 10 minutes.
Break up the tomatoes a bit with a large wooden spoon to your desired thickness.
Add spinach and cook for a few minutes until spinach has wilted.
Add in coconut milk, yogurt, and tofu. Simmer for about 20 minutes.
Garnish with cilantro and serve over basmati or brown rice.