Ingredients
Method
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.
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.
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.
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.
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.
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.
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.
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.
