Brazilian Moqueca (Bahian Fish Stew)

A vivid Bahian fish stew with white fish fillets and shrimp simmered gently in an orange coconut-tomato broth enriched with dendê palm oil, kept bright and aromatic with thick red pepper slices, onion, tomato, cilantro, and lime. Keeping the simmer gentle once the coconut milk goes in is the technique this whole stew depends on — a hard boil at that stage can split the coconut milk and toughen the seafood that follows, the same low-and-gentle principle used elsewhere in this collection whenever a dairy or coconut-based liquid needs to stay smooth rather than breaking. Cutting the vegetables into thick slices rather than a fine dice matters just as much for moqueca’s specific visual identity, since tiny dice disappears into the broth and loses the abundant, layered look this stew is known for. Adding the shrimp only in the final few minutes, well after the fish, protects it from the rubbery overcooking that would result from treating it like slower-cooking stew meat. The payoff is a bowl with dramatic colour and texture — vivid orange, palm-oil-glossed broth cradling white fish, pink shrimp, and thick red pepper, finished with fresh cilantro and lime.

Bowl of Brazilian moqueca showing vivid orange coconut broth with white fish, pink shrimp, thick red pepper slices, and fresh cilantro in a terracotta bowl on marble surface

Prep Time : 30 min

Cook Time : 35 min

Servings : 4

Prep Time :

30 min

Cook Time :

35 min

Servings :

4

Ingredients

For the Fish and Shrimp


• 600g firm white fish fillets, such as cod, hake, sea bass, snapper, or halibut, cut into large 5–6cm pieces


• 500–600g large shrimp, peeled and deveined, about 24–32 shrimp


• 45ml fresh lime juice


• 12g garlic, finely grated or minced


• 8g fine sea salt


• 2g freshly cracked black pepper

For the Moqueca Base


• 45ml dendê palm oil, divided — this one on Amazon


• 30ml olive oil or neutral oil — this one on Amazon


• 250g white onion, sliced into thick half-moons


• 180g red bell pepper, sliced into thick strips


• 100g yellow or orange bell pepper, sliced into thick strips, optional


• 4 garlic cloves, minced


• 500g ripe tomatoes, chopped, or 400g canned crushed tomatoes


• 20g tomato paste


• 300ml full-fat coconut milk — this one on Amazon


• 250ml fish stock, shrimp stock, or water


• 1 small red chilli, thinly sliced, optional


• 6g fine sea salt, plus more to taste


• 2g freshly cracked black pepper


• 30g fresh cilantro, chopped, stems included if tender

For Finishing and Serving


• 15ml dendê palm oil, for final colour and sheen


• 20g fresh cilantro leaves, scattered heavily


• 2 limes, cut into wedges

This post may contain affiliate links. As an Amazon Associate I earn from qualifying purchases, at no additional cost to you.


Directions

  1. Marinate the Seafood
    Pat the fish and shrimp dry. Place the fish in one bowl and the shrimp in another. Divide the lime juice, garlic, salt, and black pepper between them and toss gently. Marinate for 20 minutes while preparing the vegetables. Do not marinate much longer. Lime juice will start tightening the seafood texture, and over-marinated fish can turn fragile before it even reaches the pot. This short marinate is meant purely to season the seafood’s surface, not to “cook” it the way a ceviche would — the brief window is deliberate, since lime’s acid begins denaturing proteins fairly quickly and a longer soak works against the tender texture this stew needs.
  2. Prepare the Vegetables
    Slice the onion into thick half-moons. Slice the peppers into thick strips. Chop the tomatoes and cilantro. Keep everything ready before cooking because the stew comes together quickly once the broth is built. Use thick vegetable slices. Tiny dice disappear into the broth and kill the classic moqueca look. Thick, deliberate slicing here is a visual choice as much as a textural one — moqueca is meant to look abundant and layered in the bowl, with each vegetable still recognisable, rather than dissolving into an undifferentiated broth.
  3. Build the Base
    Heat 30ml dendê palm oil and the olive oil in a wide heavy pot or clay pot over medium heat. Add the onion and bell peppers. Cook for 5–7 minutes, stirring gently, until slightly softened but still visibly structured. Add the garlic and cook for 30 seconds. Add the tomatoes, tomato paste, chilli if using, salt, black pepper, and chopped cilantro. Cook for 6–8 minutes until the tomatoes collapse and the mixture becomes saucy. The base should smell sweet, savoury, and aromatic before the coconut milk goes in. If the tomato still tastes raw, keep cooking. Building this aromatic tomato-vegetable base fully before the coconut milk is added is what gives the finished broth real depth — coconut milk added too early would round out and mute those developing flavours before they’ve had a chance to concentrate.
  4. Make the Coconut-Tomato Broth
    Add the coconut milk and fish stock, shrimp stock, or water. Stir gently and bring to a low simmer. Simmer uncovered for 8–10 minutes, until the broth turns orange, slightly thickens, and the palm oil starts giving the surface a glossy colour. Do not boil hard. Moqueca should simmer gently. A hard boil breaks the coconut milk and later destroys the fish. Coconut milk’s fat and water content can separate under aggressive, sustained boiling, producing a broken, oily-looking broth rather than the smooth, glossy one this stew depends on — a gentle simmer keeps that emulsion intact while still allowing the flavours to meld and the colour to develop.
  5. Cook the Fish
    Nestle the marinated fish pieces into the broth in a single layer as much as possible. Spoon a little broth over the top. Cover and simmer gently for 5–7 minutes, depending on thickness, until the fish is almost cooked through and flakes at the edges but still holds its shape. Do not stir aggressively after adding the fish. Fold or shake the pot gently if needed. Stirring breaks the fish into ugly fragments. Nestling the pieces into a single layer, rather than piling them, gives each one roughly equal contact with the hot broth, which is what allows the whole batch to cook through evenly in the same short window.
  6. Add the Shrimp
    Add the shrimp over and around the fish. Cover again and simmer for 3–4 minutes, just until the shrimp turn pink-orange and curl into loose C-shapes. Do not overcook them. Tight O-shaped shrimp are overdone and rubbery. Shrimp cook considerably faster than the fish, which is exactly why they’re added well after it — treating them identically to the slower-cooking fish would leave them tough and overdone by the time everything is ready together.
  7. Finish the Moqueca
    Drizzle in the final 15ml dendê palm oil and gently spoon broth over the seafood. Taste and adjust salt or lime if needed. The broth should be vivid orange, rich from coconut milk, lightly sharp from lime, and glossy with palm oil. It should be loose and spoonable, not thick like curry paste. Adding this final measure of dendê oil at the very end, rather than only at the start, is what gives the finished broth its most vivid colour and glossiest sheen — the oil’s characteristic orange-red hue and rich flavour are most pronounced when it hasn’t spent the whole cook simmering and integrating into the base.
  8. Serve
    Scatter fresh cilantro leaves heavily over the stew and add lime wedges at the edge of the bowl or pot. Serve immediately while the fish is tender, the shrimp are just cooked, and the orange broth is hot and glossy. The seafood continues cooking gently in the hot broth even off the heat, so serving without delay is what keeps both the fish and shrimp at their intended, just-cooked texture rather than drifting toward overdone.

*Notes

  • Dendê palm oil is genuinely the signature ingredient of this dish rather than an optional flourish, and it’s worth understanding why substituting it changes the result more than most swaps in a typical recipe. Its distinctive deep orange-red colour and rich, slightly nutty flavour are what give moqueca baiana its unmistakable visual and flavour identity — a version made without it, using only neutral or olive oil, will still taste like a reasonable coconut-tomato fish stew, but it won’t have the same depth of colour or the specific character that defines this dish as distinctly Bahian.
  • The gentle simmer maintained from the moment the coconut milk enters the pot through to serving is a consistent thread worth tracking across the whole recipe, not just a single instruction. Coconut milk’s emulsion is genuinely fragile under sustained hard boiling, and once broken, that separation doesn’t fully recombine on its own. Every stage from that point forward — building the broth, cooking the fish, adding the shrimp — is calibrated around maintaining that same gentle heat.
  • The sequencing of fish before shrimp reflects a real difference in how quickly each cooks, not an arbitrary order. Fish pieces at the specified size need several minutes of gentle simmering to cook through properly, while shrimp reach doneness in a fraction of that time. Adding both simultaneously would force a choice between undercooked fish and badly overcooked, rubbery shrimp — staggering the additions is what allows both to finish at their correct texture together.
  • Keeping the vegetables cut thick throughout this recipe is a detail that pays off specifically at the serving stage. Moqueca’s visual identity depends on being able to see distinct pieces of onion, pepper, and tomato suspended in the vivid orange broth — a stew built on finely diced vegetables would still taste similar but would lose that layered, abundant appearance that’s part of what makes moqueca visually distinctive on the table.

Why This Recipe Works

This recipe works because the aromatic base is fully built and concentrated before the coconut milk is ever added, and the broth is then kept at a consistently gentle simmer throughout the rest of the cook to protect the coconut milk’s emulsion.

Fish and shrimp are added in sequence rather than together, accounting for their genuinely different cooking speeds, and thick-cut vegetables preserve the stew’s distinctive layered, abundant appearance.

Finishing with a final measure of dendê palm oil gives the broth its most vivid colour and richest flavour right at the point of serving.


Ingredient Breakdown

Dendê Palm Oil

The signature ingredient — provides the distinctive deep orange-red colour and rich, nutty flavour that defines Bahian moqueca specifically.

Full-Fat Coconut Milk

The broth’s body — simmered gently rather than boiled hard to keep its emulsion intact and smooth.

Thick-Sliced Onion and Bell Pepper

The visual and textural backbone — cut deliberately thick so each piece stays distinct in the finished broth.

Staggered Fish-Then-Shrimp Addition

The critical timing technique — accounts for the fish’s longer cook time relative to the much faster-cooking shrimp.

Final Dendê Oil Drizzle

The finishing touch — added right at the end for maximum colour vibrancy and flavour, rather than fully integrated earlier in the cook.


Flavor Structure Explained 

This moqueca follows a layered balance model:

  • Rich coconut foundation (coconut-tomato broth)
  • Distinctive palm oil depth (dendê oil)
  • Sweet vegetal body (onion, bell pepper, tomato)
  • Fresh tender protein (fish, shrimp)
  • Bright citrus-herbal finish (lime, cilantro)

The coconut-tomato broth defines the stew with rich, creamy body and gentle sweetness. Dendê palm oil layers in a distinctive depth and colour unique to Bahian cooking, running through the whole dish rather than sitting on top. Thick-sliced onion and bell pepper contribute sweet, still-structured vegetal body against the smooth broth. Tender white fish and just-cooked shrimp provide the stew’s central, delicate protein. A final scatter of fresh cilantro and a squeeze of lime finish every bowl with clean, bright acidity that balances the broth’s richness.


Common Mistakes to Avoid 

  • Boiling the Broth Hard After Adding Coconut Milk – This can split the coconut milk’s emulsion and toughen the seafood. Always keep the simmer gentle from this point onward.
  • Over-Marinating the Seafood in Lime – Extended contact with lime juice tightens and can make the fish fragile before it even reaches the pot. Always limit the marinade to about 20 minutes.
  • Dicing the Vegetables Finely Instead of in Thick Slices – Small pieces disappear into the broth and lose moqueca’s characteristic layered, abundant look. Always cut onion, pepper, and tomato into thick, visible pieces.
  • Adding the Shrimp at the Same Time as the Fish – Shrimp cook much faster and turn rubbery if treated like the slower-cooking fish. Always add them several minutes later.
  • Stirring Aggressively Once the Fish Is in the Pot – This breaks the delicate fish into ragged fragments. Always fold or gently shake the pot instead.

Variations

Vegetarian Moqueca

Substitute the fish and shrimp with 500g of firm tofu and 300g of hearts of palm, added at the same staggered timing as the seafood would be.

Spicier Version

Increase the sliced red chilli and add a small amount of malagueta pepper sauce to taste at the finishing stage for a sharper, more assertive heat.

With Whole Shrimp (Shell-On)

Use shell-on shrimp for a more traditional, deeper-flavoured broth, removing shells at the table when eating.

Extra-Rich Version

Increase the coconut milk to 400ml for an even creamier, richer broth with a slightly milder tomato presence.


Storage & Make-Ahead

The moqueca base (through the coconut-tomato broth stage, before any seafood is added) can be made ahead and refrigerated in a sealed container for up to 3 days, or frozen for up to 2 months.

Raw, marinated seafood should be cooked fresh rather than stored marinated for an extended time.

The fully finished stew, with seafood, is best eaten the same day it’s made; the fish and shrimp continue cooking and can turn tough or rubbery on reheating.

If leftovers remain, reheat very gently over low heat just until warmed through, taking care not to overcook the seafood further.


Frequently Asked Questions

Why is it so important to keep the simmer gentle once the coconut milk is added?

Coconut milk’s fat and water content can separate under sustained hard boiling, producing a broken, oily-looking broth instead of the smooth, glossy one this stew depends on. A gentle simmer keeps that emulsion intact while still allowing the broth’s flavours to fully develop.

Why does the recipe call for thick vegetable slices instead of a finer dice?

Moqueca’s visual identity depends on distinct, recognisable pieces of onion, pepper, and tomato suspended in the broth. Finely diced vegetables would essentially disappear into the liquid, losing the abundant, layered look that’s central to how this stew is meant to appear in the bowl.

Why is the shrimp added several minutes after the fish rather than at the same time?

Shrimp cook considerably faster than the fish pieces used in this recipe. Adding both simultaneously would force a trade-off between undercooked fish and overcooked, rubbery shrimp — staggering the additions lets each reach its own correct doneness.

Why does dendê palm oil matter so much, and can it really not be substituted?

Dendê oil provides moqueca’s signature deep orange-red colour and distinctive rich, nutty flavour. A version made with only neutral or olive oil can still taste like a good coconut-tomato fish stew, but it loses the specific character that identifies the dish as authentically Bahian.

Are there other South or Central American soups and stews worth trying?

Pozole Rojo and Sopa de Tortilla are both worth exploring if you enjoy rich, deeply flavoured soups from this region — pozole built around a toasted chile broth with pork and hominy, and sopa de tortilla around a roasted tomato-chipotle broth with chicken and crispy tortilla strips, though both take a very different direction from moqueca’s coconut-and-dendê base.



Nutrition Facts 

( per serving )

Calories

~480 kcal

Protein

 40 g

Fat

26 g

Carbs

18 g

Calories

~480 kcal

Protein

 40 g

Fat

26 g

Carbs

18 g

Related Recipes

Related Recipes


You might also like

You might also like


Bowl of Brazilian moqueca showing vivid orange coconut broth with white fish, pink shrimp, thick red pepper slices, and fresh cilantro in a terracotta bowl on marble surface

Brazilian Moqueca (Bahian Fish Stew)

A vivid Bahian fish stew with white fish fillets and shrimp simmered gently in an orange coconut-tomato broth enriched with dendê palm oil, kept bright and aromatic with thick red pepper slices, onion, tomato, cilantro, and lime. Keeping the simmer gentle once the coconut milk goes in is the technique this whole stew depends on — a hard boil at that stage can split the coconut milk and toughen the seafood that follows, the same low-and-gentle principle used elsewhere in this collection whenever a dairy or coconut-based liquid needs to stay smooth rather than breaking. Cutting the vegetables into thick slices rather than a fine dice matters just as much for moqueca's specific visual identity, since tiny dice disappears into the broth and loses the abundant, layered look this stew is known for. Adding the shrimp only in the final few minutes, well after the fish, protects it from the rubbery overcooking that would result from treating it like slower-cooking stew meat. The payoff is a bowl with dramatic colour and texture — vivid orange, palm-oil-glossed broth cradling white fish, pink shrimp, and thick red pepper, finished with fresh cilantro and lime.
Prep Time 30 minutes
Cook Time 35 minutes
Marinating Time 20 minutes
Servings: 4
Course: Main Course, Soup
Cuisine: Brazilian, South American
Calories: 480

Ingredients
  

For the Fish and Shrimp
  • 600 g firm white fish fillets such as cod, hake, sea bass, snapper, or halibut, cut into large 5–6cm pieces
  • 500–600 g large shrimp peeled and deveined, about 24–32 shrimp
  • 45 ml fresh lime juice
  • 12 g garlic finely grated or minced
  • 8 g fine sea salt
  • 2 g freshly cracked black pepper
For the Moqueca Base
  • 45 ml dendê palm oil divided
  • 30 ml olive oil or neutral oil
  • 250 g white onion sliced into thick half-moons
  • 180 g red bell pepper sliced into thick strips
  • 100 g yellow or orange bell pepper sliced into thick strips, optional
  • 4 garlic cloves minced
  • 500 g ripe tomatoes chopped, or 400g canned crushed tomatoes
  • 20 g tomato paste
  • 300 ml full-fat coconut milk
  • 250 ml fish stock shrimp stock, or water
  • 1 small red chilli thinly sliced, optional
  • 6 g fine sea salt plus more to taste
  • 2 g freshly cracked black pepper
  • 30 g fresh cilantro chopped, stems included if tender
For Finishing and Serving
  • 15 ml dendê palm oil for final colour and sheen
  • 20 g fresh cilantro leaves scattered heavily
  • 2 limes cut into wedges

Method
 

Marinate the Seafood
  1. Pat the fish and shrimp dry. Place the fish in one bowl and the shrimp in another. Divide the lime juice, garlic, salt, and black pepper between them and toss gently. Marinate for 20 minutes while preparing the vegetables. Do not marinate much longer. Lime juice will start tightening the seafood texture, and over-marinated fish can turn fragile before it even reaches the pot. This short marinate is meant purely to season the seafood’s surface, not to “cook” it the way a ceviche would — the brief window is deliberate, since lime’s acid begins denaturing proteins fairly quickly and a longer soak works against the tender texture this stew needs.
Prepare the Vegetables
  1. Slice the onion into thick half-moons. Slice the peppers into thick strips. Chop the tomatoes and cilantro. Keep everything ready before cooking because the stew comes together quickly once the broth is built. Use thick vegetable slices. Tiny dice disappear into the broth and kill the classic moqueca look. Thick, deliberate slicing here is a visual choice as much as a textural one — moqueca is meant to look abundant and layered in the bowl, with each vegetable still recognisable, rather than dissolving into an undifferentiated broth.
Build the Base
  1. Heat 30ml dendê palm oil and the olive oil in a wide heavy pot or clay pot over medium heat. Add the onion and bell peppers. Cook for 5–7 minutes, stirring gently, until slightly softened but still visibly structured. Add the garlic and cook for 30 seconds. Add the tomatoes, tomato paste, chilli if using, salt, black pepper, and chopped cilantro. Cook for 6–8 minutes until the tomatoes collapse and the mixture becomes saucy. The base should smell sweet, savoury, and aromatic before the coconut milk goes in. If the tomato still tastes raw, keep cooking. Building this aromatic tomato-vegetable base fully before the coconut milk is added is what gives the finished broth real depth — coconut milk added too early would round out and mute those developing flavours before they’ve had a chance to concentrate.
Make the Coconut-Tomato Broth
  1. Add the coconut milk and fish stock, shrimp stock, or water. Stir gently and bring to a low simmer. Simmer uncovered for 8–10 minutes, until the broth turns orange, slightly thickens, and the palm oil starts giving the surface a glossy colour. Do not boil hard. Moqueca should simmer gently. A hard boil breaks the coconut milk and later destroys the fish. Coconut milk’s fat and water content can separate under aggressive, sustained boiling, producing a broken, oily-looking broth rather than the smooth, glossy one this stew depends on — a gentle simmer keeps that emulsion intact while still allowing the flavours to meld and the colour to develop.
Cook the Fish
  1. Nestle the marinated fish pieces into the broth in a single layer as much as possible. Spoon a little broth over the top. Cover and simmer gently for 5–7 minutes, depending on thickness, until the fish is almost cooked through and flakes at the edges but still holds its shape. Do not stir aggressively after adding the fish. Fold or shake the pot gently if needed. Stirring breaks the fish into ugly fragments. Nestling the pieces into a single layer, rather than piling them, gives each one roughly equal contact with the hot broth, which is what allows the whole batch to cook through evenly in the same short window.
Add the Shrimp
  1. Add the shrimp over and around the fish. Cover again and simmer for 3–4 minutes, just until the shrimp turn pink-orange and curl into loose C-shapes. Do not overcook them. Tight O-shaped shrimp are overdone and rubbery. Shrimp cook considerably faster than the fish, which is exactly why they’re added well after it — treating them identically to the slower-cooking fish would leave them tough and overdone by the time everything is ready together.
Finish the Moqueca
  1. Drizzle in the final 15ml dendê palm oil and gently spoon broth over the seafood. Taste and adjust salt or lime if needed. The broth should be vivid orange, rich from coconut milk, lightly sharp from lime, and glossy with palm oil. It should be loose and spoonable, not thick like curry paste. Adding this final measure of dendê oil at the very end, rather than only at the start, is what gives the finished broth its most vivid colour and glossiest sheen — the oil’s characteristic orange-red hue and rich flavour are most pronounced when it hasn’t spent the whole cook simmering and integrating into the base.
Serve
  1. Scatter fresh cilantro leaves heavily over the stew and add lime wedges at the edge of the bowl or pot. Serve immediately while the fish is tender, the shrimp are just cooked, and the orange broth is hot and glossy. The seafood continues cooking gently in the hot broth even off the heat, so serving without delay is what keeps both the fish and shrimp at their intended, just-cooked texture rather than drifting toward overdone.

Notes

Dendê palm oil is genuinely the signature ingredient of this dish rather than an optional flourish, and it’s worth understanding why substituting it changes the result more than most swaps in a typical recipe. Its distinctive deep orange-red colour and rich, slightly nutty flavour are what give moqueca baiana its unmistakable visual and flavour identity — a version made without it, using only neutral or olive oil, will still taste like a reasonable coconut-tomato fish stew, but it won’t have the same depth of colour or the specific character that defines this dish as distinctly Bahian.
The gentle simmer maintained from the moment the coconut milk enters the pot through to serving is a consistent thread worth tracking across the whole recipe, not just a single instruction. Coconut milk’s emulsion is genuinely fragile under sustained hard boiling, and once broken, that separation doesn’t fully recombine on its own. Every stage from that point forward — building the broth, cooking the fish, adding the shrimp — is calibrated around maintaining that same gentle heat.
The sequencing of fish before shrimp reflects a real difference in how quickly each cooks, not an arbitrary order. Fish pieces at the specified size need several minutes of gentle simmering to cook through properly, while shrimp reach doneness in a fraction of that time. Adding both simultaneously would force a choice between undercooked fish and badly overcooked, rubbery shrimp — staggering the additions is what allows both to finish at their correct texture together.
Keeping the vegetables cut thick throughout this recipe is a detail that pays off specifically at the serving stage. Moqueca’s visual identity depends on being able to see distinct pieces of onion, pepper, and tomato suspended in the vivid orange broth — a stew built on finely diced vegetables would still taste similar but would lose that layered, abundant appearance that’s part of what makes moqueca visually distinctive on the table.