Vegan Moqueca Recipe: A Creamy Brazilian Stew With Tofu

A good vegan moqueca recipe is what you make when you want the comfort of a stew but you don’t want it heavy, or you’re cooking for people with different diets. You still get the soul of moqueca: a coconut milk base, tomatoes, peppers, lime, cilantro, and that gentle simmer that makes everything taste like it belongs together. The trick is replacing seafood with something that stays tender and satisfying. That’s where firm tofu shines.

I’ve cooked plant-based moqueca both ways: tofu stirred straight into the sauce (fast, but sometimes soft) and tofu browned first (more work, but the texture is worth it). This guide gives you a full recipe, plus the practical fixes that vegan versions often skip: how to keep tofu from going mushy, how to adjust spice, and how to make a Bahian-style stew even when you can’t find dendê oil.

What Is a Vegan Moqueca Recipe?

A vegan moqueca recipe is a plant-based adaptation of moqueca, a Brazilian stew traditionally associated with Bahia (often called Moqueca Baiana). In place of fish or shrimp, the vegan version uses tofu cubes (soy protein) or a vegetable-forward mix while keeping the signature coconut-tomato broth, onion and garlic aromatics, lime juice for brightness, and cilantro as a fresh herb finish.

Moqueca fits into the “stew” and “Brazilian cuisine,” and more broadly into Latin American food culture. In this version, the meronyms stay familiar: diced tomatoes, bell pepper slices, garlic cloves, coconut broth, lime wedges, and a cilantro garnish. The biggest shift is the protein substitute. Tofu brings plant protein and a mild flavor that absorbs the sauce instead of fighting it.

You’ll also hear moqueca used as both a dish name and a regional style, which makes it a bit of “moqueca” can mean the stew itself, but also a particular Bahian approach that leans rich with coconut milk and sometimes dendê (palm) oil.

What Makes Vegan Moqueca Taste “Real”

A lot of vegetarian Brazilian stew recipes taste like coconut vegetable curry with a Brazilian name. The difference comes down to structure and sequencing.

First, the base. You need onion and garlic cooked until sweet and translucent, not browned and sharp. Then tomatoes cook down until jammy so the stew tastes like a sauce, not like raw salsa floating in coconut milk.

Second, the acid. Lime juice is not optional. It wakes up coconut milk, sharpens the peppers, and keeps the stew from feeling flat. This is one reason moqueca feels bright even when it’s rich.

Third, the fat choice. Traditional Moqueca Baiana often uses dendê oil, which gives an earthy aroma and an orange tint. If you can’t find it, olive oil works fine, but the stew will lean more “adapted” than “authentic.” When I’m cooking for someone who’s new to moqueca, I’ll sometimes use half olive oil and half virgin coconut oil. It’s not dendê, but it keeps the tropical feel.

Finally, the protein. Tofu is the most reliable fish substitute because it stays mild and absorbs the coconut-tomato base. But tofu has one weakness: if it’s too wet or too soft, it turns spongy and breaks apart. The recipe below fixes that.

This flavorful vegan moqueca recipe pairs beautifully with Rice, which absorbs the rich coconut milk broth and enhances every bite. Serving it with fluffy rice creates a balanced, comforting meal inspired by traditional Moqueca flavors—completely plant-based and satisfying.

Recipe

The Best Vegan Moqueca Recipe With Tofu

Discover The Best Vegan Moqueca Recipe With Tofu, a plant-based take on traditional Moqueca made with creamy coconut milk, bell peppers, tomatoes, and perfectly seasoned tofu. This guide also shows you how to press tofu properly, how to keep the stew from getting watery, and how to keep the squash step from turning into “extra work that feels optional” so every layer of flavor truly counts. Enjoy a rich, authentic Brazilian-inspired meal that’s both hearty and completely vegan.

Vegan Tofu Moqueca (Brazilian Coconut-Tomato Stew)

Prep time: 15 minutes
Cook time: 35 minutes
Total time: 50 minutes
Serves: 5

Ingredients

  • 1 medium butternut squash (about 1 kg / 2.2 lb unprepared), peeled, deseeded, diced into 2 cm (¾-inch) cubes
  • 2 Tbsp olive oil, divided
  • 1 large brown onion, finely chopped
  • 1½ Tbsp virgin coconut oil (or olive oil)
  • 4 garlic cloves, crushed or minced
  • 1 (2-inch / 5 cm) piece fresh ginger, grated
  • 1 red chili, finely chopped (or to taste)
  • 3 large or 4 medium tomatoes, finely chopped
  • 400 ml full-fat coconut milk
  • 240 ml (1 cup) strong vegetable stock
  • Juice of 1 lime (plus extra wedges for serving if you like)
  • 2 red bell peppers, thinly sliced
  • 100 g green beans, trimmed
  • 150 g frozen spinach
  • 300 g firm tofu, well-drained and diced
  • A handful of fresh coriander (cilantro), finely chopped
  • Salt and pepper
  •  

Step-by-step instructions

1. Prep the tofu first (this prevents mushiness).

Drain tofu and press it for 10–15 minutes. You don’t need fancy equipment: wrap it in a clean towel and put a cutting board plus a heavy pan on top. Then dice into bite-size cubes. This one step makes a bigger texture difference than any seasoning.

2. Roast the squash for caramelized flavor (optional, but worth it).

Heat oven to 200°C / 400°F / gas 6. Toss squash with 1 Tbsp olive oil and a good pinch of salt. Roast for about 25–30 minutes until tender and lightly browned at the edges.
If you skip roasting, you’ll still get a good stew, but it will taste lighter and less “rounded.”

3. Build the flavor base slowly.

In a large pan or pot, warm coconut oil over low heat. Add onion and cook about 10 minutes until soft and translucent. Add garlic, ginger, and chili; cook 1 minute until fragrant.

4. Cook the tomatoes down into a sauce.

Add chopped tomatoes and cook 8–10 minutes until they collapse and the mixture looks thick, not watery. If tomatoes are pale or out of season, a spoonful of tomato paste can help, but it’s optional.

5. Create the coconut broth and start the simmer.

Add coconut milk, vegetable stock, lime juice, salt, and pepper. Bring to a gentle simmer. If the sauce looks thin, simmer uncovered for 2–3 minutes before adding vegetables.

6. Simmer vegetables in stages (so nothing turns to mush).

Add sliced bell peppers and green beans. Simmer 7–8 minutes until tender-crisp. Add frozen spinach and simmer 2 minutes more.

7. Brown the tofu for a “seafood-like” bite.

Heat 1 Tbsp of olive oil in a skillet. Fry tofu cubes until golden on several sides. This is the difference between “soft tofu in soup” and tofu that feels satisfying.
Add browned tofu and roasted squash to the stew and stir gently.

8. Finish with cilantro and adjust.

Add chopped cilantro, taste, and adjust with more salt, pepper, chili, or an extra squeeze of lime. Serve with white rice and, if you like, fried plantain.

Quick troubleshooting

  • Stew too thin: simmer uncovered 5–8 minutes before adding cilantro.
  • Tofu too soft: press longer next time or buy extra-firm tofu and brown it harder.
  • Too spicy: add more coconut milk (60–120 ml / ¼–½ cup) to calm it down.
  • Too mild: add chili later and let it warm through for 2 minutes.

Make it vegetarian (not vegan)

If your audience eats dairy, a vegetarian Brazilian stew variation can finish with a small spoon of Greek yogurt or crème fraîche at the table for tang. That’s not traditional moqueca, but it’s a gentle bridge for readers who are new to coconut-based stews.

Vegan vs Traditional: Keeping It Authentic Without Seafood

A helpful way to think about vegan moqueca is “authentic vs adapted.” You want the adapted version to respect the original blueprint: coconut milk base, tomatoes, bell peppers, lime, cilantro, and a gentle simmer. The “seafood” element becomes tofu, and the “ocean” flavor comes from balancing salt, acid, and aromatics rather than trying to mimic fish exactly.

If you want to push it closer to a coastal vibe, add a small amount of seaweed (like a strip of nori or a pinch of dulse) while simmering, then remove it. That gives a subtle umami note without turning the stew into something else. It’s a practical application most competitors don’t include because it’s a bit counterintuitive, but it works.

This is also where “palm” becomes a fun it can mean a tree (as in palm trees) or an oil ingredient. In Bahian-style moqueca, palm oil is the ingredient; in a vegan kitchen, it may be the thing you swap.

Baiana vs Capixaba in a Vegan Context

Moqueca Baiana and Moqueca Capixaba only in the traditional fish context. The vegan twist changes the comparison in useful ways.

  • Baiana-style vegan moqueca stays rich and tropical. Coconut milk carries the stew, and dendê oil (or an olive oil substitute) adds depth. Tofu feels “right” here because the sauce is bold enough to coat it.
  • Capixaba-style vegan moqueca is lighter and more tomato-forward. If you skip coconut milk, the stew becomes closer to a simmered dish with peppers, tomatoes, herbs, and stock. It can be excellent, but tofu needs more browning and stronger seasoning to feel satisfying because the broth is thinner.

A practical takeaway: if your goal is a comforting, creamy bowl that’s clearly a vegan moqueca recipe, the Baiana direction is the easier win. If you want a lighter weeknight stew that still nods to Brazilian coastal cuisine, go Capixaba-inspired and use more tomatoes, herbs, and stock.

For the bigger picture of where moqueca fits in Brazilian coastal cuisine and Afro-Brazilian culinary tradition, see our complete guide to Brazilian cuisine and coastal classics

Practical Tips You Can Use Immediately

  • Press tofu even when you’re in a hurry. Ten minutes changes everything. If you skip it, you’ll get a spongy vs firm texture.
  • Simmer gently, not aggressively. A hard boil can make vegetables limp and tofu rubbery.
  • Add spinach late. Frozen spinach only needs a couple minutes to warm through.
  • Use lime in two moments: a little in the broth and more at the end. That keeps it bright and prevents “flat coconut” flavor.
  • Roast squash when you want depth. If you’re doing the no-roast shortcut, cut squash smaller and add it earlier so it cooks evenly without turning mushy.

Common Mistakes to Avoid

  • Adding all vegetables at once. Green beans and peppers need time, spinach doesn’t. Overcooking makes the stew feel tired rather than fresh.
  • Skipping tomato reduction. If tomatoes aren’t cooked down, the broth tastes watery and the coconut milk can feel separated.
  • Using soft tofu. Silken tofu will break apart in a stew. Stick to firm or extra-firm tofu cubes.
  • Overdoing the chili early. It’s easy to make it too spicy. Build heat gradually so you can land in “mild vs spicy” exactly where your readers want it.

FAQ

Moqueca is made of a tomato base with onion and garlic, bell peppers, herbs like cilantro, and a simmered broth that is often built with coconut milk in Bahian versions. In a vegan moqueca recipe, tofu cubes replace fish or shrimp.

Moqueca can be mild or spicy depending on the chili peppers used. This vegan version lets you control heat by adding less chili early and finishing with extra lime for brightness instead of more spice.

Dendê oil is Brazilian palm oil used in Moqueca Baiana for its distinctive aroma and orange color. If you can’t find it, olive oil works as a substitute, though the flavor will be more adapted than traditional.

Moqueca can be made vegetarian by using tofu or vegetables as the protein base. This vegan moqueca recipe is fully plant-based, but it still tastes like a Brazilian stew because the coconut-tomato-lime structure stays intact.

Traditional moqueca often uses firm white fish such as cod, halibut, or sea bass, and some versions add shrimp. Vegan versions skip seafood and rely on tofu moqueca or mixed vegetables.

Moqueca Baiana is usually richer and more tropical with coconut milk and often dendê oil, while Moqueca Capixaba is typically lighter and more tomato-forward. In vegan cooking, Baiana-style is usually easier because the coconut broth gives tofu more support.

Olive oil is the simplest substitute for dendê oil, and virgin coconut oil can add a tropical note. If you use substitutes, keep the lime and cilantro strong so the stew still feels like moqueca rather than generic coconut curry.

Moqueca can remind people of curry because it uses coconut milk and a simmered sauce, but the flavor profile is different. Lime, tomatoes, peppers, and cilantro pull it toward Brazilian coastal cuisine rather than Indian spice blends.

Wrap-Up: Your New Weeknight Vegan Moqueca Recipe

A reliable vegan moqueca recipe isn’t about pretending tofu is fish. It’s about building a coconut-tomato broth that’s bright with lime, fragrant with garlic and ginger, and finished with cilantro so it tastes fresh, not heavy. Press and brown the tofu, simmer gently, and you’ll get a stew that feels both comforting and distinctly Brazilian.

Next step: make it once as written, then try one variation the next time (Capixaba-inspired lighter broth, or more vegetables with less tofu). For more Brazilian plant-based ideas, visit our complete guide to Brazilian cuisine

Share this post:
Santos Camila​

Santos Camila

Through Brazil Eats, I share authentic Brazilian recipes inspired by family traditions and everyday cooking.

Leave a Reply

Your email address will not be published. Required fields are marked *