Brazilian Fish Stew is the dish I tasted at a friend’s dinner party and immediately decided I needed in my regular weeknight life. Brazilian Fish Stew (the real name is moqueca) hit the table in this bright, jewel-toned pot, and the whole kitchen smelled like coconut milk, lime, and cilantro had thrown a tiny beach vacation without telling anyone.
I remember hovering near the stove like a polite little vulture, watching fish gently poach in the broth while my friend casually chatted like this wasn’t a magic trick. Then I took one bite—creamy, tangy, a little sweet, a little spicy—and I swear I could hear ocean waves in my head. The best part? Nothing in it was fussy or impossible.
Most home cooks assume authentic Brazilian dishes mean specialty ingredients, complicated techniques, or a shopping trip that requires a map and a snack break. But here’s the good news: this Brazilian Fish Stew tastes like a restaurant flex, while still being totally doable with normal supermarket ingredients (plus a few easy swaps that keep the spirit of the dish).
You’re getting simple step-by-step instructions, substitutions that actually work, regional notes, and the practical tips I learned after making moqueca at least a dozen times—yes, including the time I overcooked the fish and had to pretend it was “rustic.”
Table of Contents
Table of Contents
Quick Overview
- Prep Time: 15 minutes
- Cook / Chill Time: 20 minutes
- Total Time: 35 minutes
- Servings: 4–6
- Difficulty: Easy (beginner-friendly)
Why You’ll Love This Brazilian Fish Stew
- It’s a one-pot wonder that looks wildly impressive, like you planned your life and folded laundry the same day.
- Naturally gluten-free and dairy-free, but still rich and cozy (thank you, coconut milk).
- Flexible with fish and add-ins—this stew doesn’t punish you for using what you’ve got.
- Those vibrant, tropical flavors feel special, yet you’re eating in about 35 minutes.
- It’s perfect for guests… and also perfect for Tuesday when you’re tired and need something cheering.
If you’re into cozy brothy dinners like this, you’d probably also love a coconut curry soup (internal link: coconut curry soup). Similar comfort, different accent.
Print
Brazilian Fish Stew – Easy 30-Minute Recipe
- Total Time: 35 minutes
- Yield: 4–6 servings 1x
Description
Brazilian Fish Stew (Moqueca) is a bright, cozy one-pot dinner made with tender white fish gently poached in a silky coconut-tomato broth with peppers, garlic, lime, and cilantro. It tastes like a restaurant-level dish but is totally doable on a weeknight.
Ingredients
For the fish (quick marinade)
680 g (1 1/2 lb) firm white fish (cod, halibut, mahi-mahi), cut into 2-inch chunks
1 tsp fine salt
1/2 tsp black pepper
2 tbsp lime juice (30 ml)
For the base
2 tbsp olive oil (30 ml)
1 medium onion, thinly sliced
1 red bell pepper, thinly sliced
1 yellow or orange bell pepper, thinly sliced (optional)
3 cloves garlic, minced
2 medium tomatoes, sliced or chopped (or 1 cup canned diced tomatoes, drained)
1 small hot pepper, sliced (jalapeño or Fresno) (optional)
1 tsp sweet paprika
1/2 tsp ground cumin (optional)
For the broth
400 ml (1 can / 13.5–14 oz) full-fat coconut milk
240 ml (1 cup) fish stock or seafood stock (or chicken stock)
Optional seafood add-in
225 g (1/2 lb) shrimp, peeled and deveined (optional)
For finishing
1/2 cup chopped cilantro (about 15 g), plus more to serve
1–2 tbsp dendê oil / palm oil (15–30 ml) (optional)
Lime wedges, for serving
Instructions
1. In a bowl, toss fish with salt, pepper, and lime juice. Let sit 10 minutes while you prep the vegetables.
2. Heat olive oil in a large deep skillet or Dutch oven over medium heat. Add onion and bell peppers with a pinch of salt; cook 5–6 minutes until softened.
3. Add garlic (and hot pepper if using) and cook 30 seconds until fragrant.
4. Stir in tomatoes, paprika, and cumin (if using). Cook 3–4 minutes until saucy.
5. Pour in stock and coconut milk. Bring to a gentle simmer (do not boil hard).
6. Nestle fish into the broth in a single layer. Cover and simmer 6–8 minutes until the fish is opaque and flakes easily.
7. If using shrimp, add during the last 2–3 minutes and cook until pink.
8. Turn off heat. Stir in cilantro and dendê oil (if using). Taste and adjust salt + extra lime. Serve hot with rice and lime wedges.
Notes
Gentle simmer only: boiling hard can overcook the fish.
Use firm fish: cod, halibut, snapper, sea bass, or mahi-mahi hold up best.
No dendê oil? Use olive oil + a pinch more paprika (still delicious).
Cilantro substitute: use flat-leaf parsley + extra lime.
Storage: refrigerate up to 2 days; reheat low and slow. Freezing is best for the broth/veg base only (add fresh fish after thawing).
- Prep Time: 15 minutes
- Cook Time: 20 minutes
- Category: 🍲 Dinner
- Method: Simmering (One-Pot)
- Cuisine: Brazilian
Nutrition
- Serving Size: 1 bowl (about 1 1/2 cups)
- Calories: 420 kcal
- Sugar: 6g
- Sodium: 780mg
- Fat: 26g
- Saturated Fat: 17g
- Unsaturated Fat: 7g
- Trans Fat: 0g
- Carbohydrates: 16g
- Fiber: 4g
- Protein: 32g
- Cholesterol: 95mg
Ingredients for Brazilian Fish Stew
I know the list looks a little long at first glance, but I promise most of this is pantry-and-produce stuff. Let’s break it down so it’s not a wall of text attacking your eyeballs.
For the fish (quick marinade):
- 680 g firm white fish (about 1 1/2 lb), cut into big chunks (cod, halibut, mahi-mahi)
- 1 tsp fine salt
- 1/2 tsp black pepper
- 2 tbsp lime juice (30 ml)
For the base (all the good smells):
- 2 tbsp olive oil (30 ml)
- 1 medium onion, thinly sliced
- 1 red bell pepper, thinly sliced
- 1 yellow or orange bell pepper, thinly sliced (optional but pretty)
- 3 cloves garlic, minced
- 2 medium tomatoes, sliced or chopped (or 1 cup / 240 ml canned diced tomatoes, drained)
- 1 small hot pepper, sliced (jalapeño or fresno), optional
- 1 tsp sweet paprika
- 1/2 tsp ground cumin (optional, not strictly traditional, but it plays nice)
For the liquid (aka the silky broth):
- 400 ml full-fat coconut milk (about 1 can / 13.5–14 oz)
- 240 ml fish stock or seafood stock (1 cup)
- If you don’t have it: chicken stock works, or even water + a pinch of salt in a pinch.
For the protein extras (optional but delightful):
- 225 g shrimp (about 1/2 lb), peeled and deveined (optional)
For finishing (don’t skip the bright stuff)
- 1/2 cup chopped cilantro (about 15 g), plus more to serve
- 1–2 tbsp dendê oil (palm oil) (15–30 ml), optional but traditional
- Lime wedges, for serving
Sourcing notes from my regular-grocery reality: full-fat coconut milk gives you that rich, creamy texture. Firm white fish holds together instead of dissolving into a sad fish confetti. Dendê oil is classic in moqueca baiana, but it’s optional—more on that below.
Ingredient Substitutions & Variations
Here’s the thing about moqueca: it has a traditional backbone, but it’s also very forgiving in a real home kitchen.
Dendê oil (palm oil):
- Traditional moqueca baiana often uses dendê oil for that signature color and earthy flavor.
- If you have it, use a little (it’s strong).
- If you don’t, don’t panic. Use **olive oil** plus a pinch more paprika. The stew will still be absolutely delicious—just less “classic Bahia.”
Fish options (choose firm):
- Great: cod, halibut, sea bass, mahi-mahi, snapper.
- Salmon also works if you want a richer vibe (not traditional, but tasty).
- Avoid delicate fish like sole—they tend to fall apart fast.
Shrimp and mixed seafood:
- Add shrimp in the last few minutes so it stays juicy.
- You can also add scallops (same timing as shrimp).
- If you want a Brazilian seafood stew feel, do a mix—but keep the cook times in mind.
Tomatoes:
- Fresh is lovely when ripe.
- Canned diced tomatoes are totally fine when your tomatoes taste like crunchy water (we’ve all been there).
Heat level:
- Keep it mild: skip the hot pepper.
- Medium: jalapeño with seeds removed.
- Spicy: keep some seeds, or add a pinch of crushed red pepper.
Cilantro situation:
– If you’re one of those people for whom cilantro tastes like soap, I’m not here to argue with your tastebuds. Use **flat-leaf parsley** and add extra lime.
Regional note (quick and helpful):
Brazil has more than one “correct” version. Moqueca capixaba (from Espírito Santo) usually skips coconut milk and dendê oil, leaning more on olive oil and annatto. If you’re curious, Serious Eats has great background on Brazilian stews and technique.
What Is Brazilian Fish Stew (Moqueca)?

Brazilian Fish Stew, better known as moqueca, is a coastal Brazilian dish where fish gently poaches in a fragrant broth of aromatics, tomatoes, peppers, and herbs. Many versions (especially from Bahia) include coconut milk and dendê oil, which give the stew its creamy body and that warm orange glow.
It’s not a “boil it to death” stew. It’s more like a cozy simmering bath that turns fish tender and flaky without much effort from you.
If you want a cultural deep-dive on Brazilian cuisine and regional differences, Encyclopedia Britannica’s overview is a solid starting point. Also, since fish is the star, it’s worth brushing up on buying and handling it safely. The FDA’s seafood guidance is clear and practica.
How to Make Brazilian Fish Stew
This Brazilian Fish Stew is mostly “slice things, simmer things, gently lower fish into a cozy bath.” You’ve got this.
1. Season the fish (fast, but worth it).
In a bowl, toss the fish chunks with salt, pepper, and lime juice. Let it sit while you prep everything else—about 10 minutes. This tiny step makes the fish taste seasoned all the way through, not just on the outside.
2. Build the base in one pot.
In a large deep skillet or Dutch oven, warm the olive oil over medium heat. Add onion and bell peppers with a pinch of salt. Cook 5–6 minutes until they soften and smell sweet.
Add garlic (and hot pepper if using) and cook 30 seconds—just until fragrant. If you burn garlic, it gets bitter and bossy. We don’t want bitter and bossy.
3. Add tomatoes and spices.
Stir in tomatoes, paprika, and cumin (if using). Cook 3–4 minutes, just until the tomatoes start to break down and everything looks saucy.
4. Pour in the broth and coconut milk.
Add the fish stock and coconut milk. Stir gently and bring to a low simmer. Not a rolling boil—think small bubbles, calm energy.
5. Poach the fish (the key moment).
Nestle the fish pieces into the liquid in a single layer as much as you can. Spoon a little broth over the top. Cover and simmer gently 6–8 minutes, depending on thickness, until the fish flakes easily.
6. Add shrimp (optional) and finish.
If using shrimp, add them now and simmer 2–3 minutes until pink and just cooked.
Turn off heat. Stir in cilantro and dendê oil (if using). Taste and adjust salt and lime. Serve hot with lime wedges.
This is the part where you take a second to admire your pot. The colors alone feel like a personality upgrade.

Pro Tips & Common Mistakes
- Don’t boil it hard. A gentle simmer keeps the fish tender. A boil turns it into dry, flaky regret.
- Cut fish in larger chunks. Smaller pieces overcook faster and fall apart when you stir. Big, 2-inch chunks are your friend.
- Add shrimp at the end. Shrimp cooks fast. If it goes in early, it turns bouncy. (Not in a fun way.)
- Use full-fat coconut milk. Light coconut milk can make the broth thin and less satisfying.
- Taste at the end, not the beginning. Coconut milk and stock vary a lot in saltiness. Adjust when everything’s together.
- Stir carefully. Better yet—shake the pot gently. You’re not making mashed fish.
Storage, Make-Ahead & Freezing
Brazilian Fish Stew keeps surprisingly well, but fish is delicate, so treat leftovers gently.
– Fridge: Store in an airtight container for up to 2 days. Reheat low and slow on the stove so the fish doesn’t toughen.
– Make-ahead: You can prep and slice all the vegetables up to 1 day ahead. You can also make the base (everything before adding fish) earlier, then reheat and poach the fish right before serving.
– Freezing: I don’t love freezing this stew with fish already in it—the texture can go a little mealy. If you must, freeze the broth and veg base, then add fresh fish after thawing.
Serving Suggestions

This Brazilian Fish Stew basically begs for something to soak up the broth. Like, it’s not optional. It’s a moral obligation.
- Steamed white rice (classic and perfect)
- Farofa (toasted cassava flour) if you can find it—sprinkle it on top for texture
- Crusty bread (not traditional, but extremely effective)
- Simple side salad with lime vinaigrette to keep things bright
- Sliced avocado on the side, because creamy-on-creamy is a valid life choice
If you’re building a whole “easy but impressive” dinner plan, you might also like Potsticker Stir Fry dinner recipes. Same low-stress energy.
FAQ’s about Brazilian Fish Stew
Can I make Brazilian Fish Stew without dendê oil?
Yes. Brazilian Fish Stew is still wonderful without dendê oil. Use olive oil, keep the paprika, and lean on cilantro and lime at the end for that bright, fresh finish.
What’s the best fish to use for Brazilian Fish Stew?
Choose a firm white fish that holds its shape: cod, halibut, snapper, sea bass, or mahi-mahi. If the fillet flakes if you look at it too hard, it’s probably not the one for this stew.
Is Brazilian Fish Stew spicy?
It can be, but it doesn’t have to be. The base recipe is more fragrant than fiery. If you like heat, add jalapeño or a pinch of chili flakes; if you don’t, skip it and let the coconut-lime flavor shine.
Can I use frozen fish?
Absolutely—just thaw it fully and pat it dry so you don’t water down the broth. I’ve made moqueca with frozen cod on a weeknight more times than I can count, and it still tastes like you tried really hard.
How do I know when the fish is cooked?
It should flake easily with a fork and look opaque all the way through. The biggest tip is to stop cooking as soon as it’s done—carryover heat will keep working for a minute or two.
Final Thoughts – Brazilian Fish Stew
If you’ve been craving something cozy but bright, impressive but easy, Brazilian Fish Stew is one of those rare dishes that delivers on all fronts. It’s the kind of dinner that makes your kitchen smell amazing, makes you feel like a capable person, and tastes like you should be eating it near the ocean—even if you’re actually standing in socks on your own floor.
If you try it, make it your own: swap the fish, adjust the heat, go heavy on lime, or keep it classic. And when you ladle up that first bowl, promise me you’ll grab something to soak up the broth. Brazilian Fish Stew deserves that much.



