Brazilian Coconut Fish Stew (Moqueca)
Flaky cod poached gently in a silky coconut milk broth with sweet red bell pepper, onion, tomato, garlic, and jalapeño, brightened with fresh lime and finished with a generous handful of cilantro.
Why You'll Love This Recipe
This is a coastal Brazilian-style stew built around flaky white fish and a fragrant coconut broth, and it comes together in one pot in well under an hour. It is a comforting but light dinner for anyone who wants something warm and a little exotic without a long ingredient list or fussy technique. Because the cod poaches quickly and gently, it is also a forgiving dish for cooks who are nervous about overcooking fish.
The magic is in how the fish is treated. A short lime, garlic, and salt marinade seasons the cod and firms its surface, then it poaches directly in the coconut broth rather than being seared or boiled, so it stays silky and just-set. Blooming the paprika in the oil for a full minute wakes up its flavor, and cooking the crushed tomatoes briefly before the coconut milk goes in concentrates them, giving the broth its gentle color and depth. Keeping the pot at a soft simmer, never a rolling boil, is what keeps the coconut milk smooth instead of grainy.
Moqueca is a stew that eats richer than its ingredient list suggests. The coconut milk and olive oil make the broth rich and filling, while the cod delivers mild, flaky protein, so a bowl feels substantial without being heavy. The peppers, onion, tomato, and a shower of fresh cilantro keep everything bright and vegetable-forward, and the lime cuts through the richness so the last spoonful tastes as lively as the first.
Ingredients
- 1 lb cod fillets, cut into large chunks
- 1 (13.5 oz) can full-fat coconut milk
- 1 red bell pepper, sliced
- 3/4 cup crushed tomatoes
- 1 small onion, sliced
- 4 cloves garlic, minced
- 1/2 jalapeño, minced
- 1 1/2 tsp paprika
- 2 tbsp fresh lime juice
- 2 tbsp olive oil
- 1/3 cup cilantro, chopped
- 3/4 tsp salt
Instructions
- Prep and marinate the cod: Cut the cod into large, roughly two-inch chunks. In a bowl, toss the cod with the lime juice, half of the minced garlic, and a pinch of the salt. Set aside to marinate at room temperature while you prep the vegetables; the acid firms the surface of the fish so it holds together during poaching.
- Prep the vegetables: Peel and thinly slice the onion, and slice the red bell pepper into thin strips. Mince the remaining garlic and the jalapeño (leave the seeds in for more heat, or scrape them out for a milder pot). Roughly chop the cilantro and set it aside separately for the finish.
- Soften the base: Heat the olive oil in a wide pot or deep skillet over medium heat. Add the onion, bell pepper, and jalapeño and cook, stirring occasionally, until softened and the onion is translucent, about 5 to 6 minutes. Stir in the remaining garlic and the paprika and cook just until fragrant, about 1 minute, so the garlic does not brown and turn bitter.
- Build the broth: Add the crushed tomatoes and cook, stirring, until they darken slightly and lose their raw edge, about 2 minutes. Pour in the coconut milk and the remaining salt, stir to combine, and bring to a gentle simmer over medium-low heat. Keep it at a lazy bubble rather than a hard boil, which can cause the coconut milk to separate.
- Poach the cod: Settle the cod chunks and their marinade into the broth in a single layer. Cover and simmer gently, spooning the broth over the fish once or twice, until the cod turns opaque all the way through and flakes easily when nudged with a fork, about 8 to 10 minutes. Avoid stirring so the chunks stay whole.
- Finish and serve: Remove the pot from the heat and garnish with the chopped cilantro. Taste the broth and adjust with a little more salt or lime if it needs brightening. Ladle into shallow bowls, making sure each portion gets plenty of the coconut broth.
Variations
- Different white fish: Swap the cod for another firm white fish such as halibut, haddock, or mahi-mahi. Poaching time stays about the same; just watch for the fish to turn opaque and flake.
- Shrimp version: Trade the cod for peeled shrimp, adding them near the end and simmering only until they curl and turn pink, about three to four minutes. This uses shellfish in place of the fish.
- Add leafy greens: Stir a few big handfuls of chopped kale or spinach into the broth in the last couple of minutes, letting them wilt down for extra color and vegetables.
- Heartier with sweet potato: Add small cubes of peeled sweet potato along with the coconut milk and simmer until tender before the fish goes in, giving the stew more body and a subtle sweetness.
- Traditional color with red palm oil: Finish with a spoonful of red palm oil for the deep orange hue and earthy flavor of a classic version. Add it at the end so its color and aroma stay vivid.
Storage & Leftovers
Cooled leftovers keep in an airtight container in the refrigerator for up to three days. The flavor actually deepens overnight as the paprika and garlic settle into the broth, though the cod becomes more delicate and may break into smaller flakes.
Reheat gently in a saucepan over low heat just until warmed through, stirring as little as possible to keep the fish intact. Avoid boiling or microwaving on high, which can toughen the cod and cause the coconut broth to separate. A fresh squeeze of lime and a little extra cilantro right before serving revives the reheated stew.
To get ahead, make the broth through the tomato and coconut milk stage, then cool and refrigerate it for up to two days. When you are ready to eat, bring it back to a gentle simmer, add the freshly marinated cod, and poach it off, so the fish is always cooked to order and never overdone.
Notes & Tips
- Choosing the cod: Look for thick, evenly cut fillets that smell clean and briny rather than fishy; the thicker the piece, the better it holds together when poached. Frozen cod works well here too, just thaw it fully and pat it dry before cutting so the marinade clings.
- Keep the broth silky: The single most important move is heat control. Full-fat coconut milk can split into oil and curds if it boils hard, so hold the pot at a soft, lazy simmer once the coconut milk goes in and it will stay smooth and glossy.
- Dial the heat up or down: Most of the burn lives in the jalapeño seeds and white ribs. Leave them in for a lively kick, or scrape them out for a broth that is warm and fragrant but mild enough for anyone at the table.
- Brighten right before serving: Lime fades as it sits, so taste the finished broth and add a final squeeze just before it goes to the table. That last hit of acid is what makes the richness feel light rather than heavy.
- Full-fat versus light coconut milk: Full-fat gives the broth its signature body and richness. Light coconut milk will work in a pinch but yields a thinner, less luxurious stew, so if you use it, reduce the broth a couple of extra minutes before adding the fish.
- What to serve alongside: The broth is generous and begs to be soaked up. A scoop of cauliflower rice or a side of steamed greens rounds out the bowl without competing with the coconut and lime.
Nutrition & Mindful Eating
- The coconut milk, the tomatoes and the peppers make the broth, and the cod is poached in it at the very end. That order matters. The base gets time to go deep and sweet, and the fish gets only the few minutes it needs.
- Cod holds together in a simmer and then breaks into wide white flakes when you press it, soaking up broth as it goes. It is mild enough that the coconut and lime read clearly through it, and the protein in it is dense and clean.
- Coconut milk is what makes this a stew rather than a soup. It turns the tomato base soft and opaque, carries the paprika and garlic across every spoonful, and its fat is a large part of why a bowl of fish and vegetables eats so satisfyingly.
- Red bell pepper cooked slowly in olive oil goes sweet and slippery, the onion melts into the base, and the jalapeno sets a low heat underneath all of it. The peppers bring a lot of vitamin C into the pot along with that sweetness.
- Lime juice and a handful of cilantro go in off the heat so both stay sharp. The lime cuts straight through the coconut fat, the cilantro smells green and citrusy, and a good pinch of salt is what makes the tomato taste sweet.
- As you eat, spoon some broth up with every piece of fish and notice how the lime keeps arriving after the coconut, and let a bowl this warm be a reason to stop moving.
Frequently Asked Questions
What other fish can I use instead of cod?
Any firm, mild white fish poaches well here. Halibut, haddock, mahi-mahi, or sea bass all hold their shape in the broth. Choose thick fillets and cut them into large chunks so they do not fall apart, and check for doneness on the earlier side if the pieces are thin.
My coconut broth looks grainy or separated. What happened?
That almost always comes from cooking it too hot. Full-fat coconut milk breaks when it boils hard, so keep the pot at a gentle simmer once it goes in. If it does separate, pull it off the heat and stir well; the flavor is unaffected even if the texture is slightly less smooth.
Can I make this ahead for guests?
Yes, and it is a smart party dish. Build the broth through the coconut milk stage a day ahead and refrigerate it. When guests arrive, bring the broth back to a simmer, tuck in the freshly marinated cod, and poach it off in about ten minutes so the fish is always perfectly cooked.
How spicy is this, and can I make it kid-friendly?
As written it is mildly warm rather than hot. The heat comes from the jalapeño, so scrape out its seeds and ribs for a gentle version everyone can enjoy, or leave them in and add a little more chile if you like a stronger kick.

