Heat oven to 425°F. Spread the tofu on a parchment-lined baking sheet in a single layer. Roast for 25 minutes or until crispy on the outside and slightly browned. Set aside.
Meanwhile, in a large heavy pot over medium heat, heat the oil. Add the garlic, onion, tomato paste, cardamom pods and pepper flakes to the pot. Cook, stirring often, until the tomato paste has darkened and the onion has softened, about 5 minutes. Add the zucchini and bell pepper to the pot and saute until starting to soften, about 5-6 minutes. Add the spices to the pot and cook, stirring constantly, until the bottom of the pot begins to brown, about 4 minutes.
Add the tomatoes with their juices, crushing the tomatoes with your hands as you add them. Bring to a boil and then reduce the heat to a simmer, stirring frequently and scraping up any brown bits. Cook until sauce thickens, about 8 minutes. Stir in the spinach and cook until wilted, about 2-3 minutes.
Add in the cream, yogurt, and tofu. Season to taste with salt. Simmer, stirring occasionally, until slightly thickened, about 15-20 minutes. Serve with rice, barley or quinoa.
Make sure to use regular plain yogurt instead of Greek yogurt, as Greek yogurt will curdle when you add it to the tomatoes and regular plain yogurt will not.