Moqueca (Brazilian Fish Stew) with Coconut Milk & Lime
Moqueca is a Brazilian fish stew that gently poaches firm white fish in a creamy coconut milk broth with bell peppers, tomatoes, and a squeeze of fresh lime. It’s the sort of one-pot meal that fills the kitchen with the scent of garlic and cilantro while it simmers away on the stove.

Serve it over a pile of fluffy white rice, with farofa on the side for crunch, or just a chunk of crusty bread to soak up every last drop of the tangy sauce.
What Makes This Moqueca So Good
I come back to this version because the coconut milk mellows the gentle heat from the pepper and gives the broth a velvety texture without weighing anything down. The lime stirred in right before serving wakes up all the flavors at once.
The fish stays tender and flaky because it never boils, just poaches gently in the fragrant liquid. A drizzle of dendê oil adds the stew’s signature golden hue and a subtle earthy richness that makes it taste genuinely Brazilian.
Ingredients

- 1 ½ lb firm white fish fillets (cod, halibut, or tilapia): cut into 2-inch pieces
- 1 (13.5 oz) can full-fat coconut milk: shake the can well before opening
- 1 large yellow onion: thinly sliced
- 4 cloves garlic: minced
- 2 bell peppers (1 red, 1 yellow): seeded and sliced into strips
- 2 medium tomatoes: diced
- 2 Tbsp dendê oil: see substitutions below
- 2 Tbsp olive oil: for sautéing
- 1 cup fish stock or water: plus more if needed
- ¼ cup fresh lime juice: from about 2 limes
- 1 small bunch fresh cilantro: leaves and tender stems roughly chopped, plus extra for garnish
- 1 tsp kosher salt: or to taste
- Freshly ground black pepper: to taste
Variations / Substitutions
- No dendê oil?: use annatto oil (warm ¼ cup vegetable oil with 2 Tbsp annatto seeds until the oil turns red, then strain) or a mix of neutral oil plus a pinch each of paprika and turmeric for color.
- Different protein: swap in large shrimp for the last 3 minutes of cooking, or use chunks of skinless salmon.
- Don’t like cilantro?: fresh Italian parsley works well in its place.
- Want more heat?: add a thinly sliced fresh jalapeño or serrano pepper when you sauté the onion.
Moqueca de Tilapia is the main dish we love pairing with this stew.
How to Make Moqueca (Brazilian Fish Stew)
Step 1: Sauté the Aromatics

Heat the 2 tablespoons olive oil in a large, heavy pot or Dutch oven over medium-high heat. Add the sliced onion and cook, stirring occasionally, for about 5 minutes until it starts to soften and turn translucent. Stir in the minced garlic and bell pepper strips and cook for another 2 minutes, just until the garlic is fragrant.
You’ll see the peppers begin to brighten in color and the onion turn glossy. The kitchen should smell sweet and garlicky right around now.
Step 2: Build the Broth

Add the diced tomatoes, the can of coconut milk, the 1 cup of fish stock (or water), the 2 tablespoons of dendê oil, and the teaspoon of salt. Stir everything together, bring the liquid to a gentle simmer, then lower the heat so it bubbles softly. Let it cook uncovered for about 10 minutes, stirring once or twice, so the flavors meld and the tomatoes break down a little.
The broth will deepen to a warm orange-gold from the dendê oil and tomato. Give it a taste and add a little more salt if it needs it—this is your chance to season before the fish goes in.
Step 3: Nestle in the Fish

Season the fish pieces lightly with a pinch of salt and black pepper. Carefully lower them into the simmering broth in a single layer, doing your best not to splash yourself. Once all the fish is in, cover the pot with a lid, reduce the heat to low, and let it cook undisturbed for 5 to 7 minutes. Check the thickest piece at the 5-minute mark; the fish is done when it turns opaque and flakes easily with a fork.
The steam will finish cooking the top of the fillets while the broth keeps the bottom half moist. Try not to stir the pot at all during this stage—stirring can break the delicate fish apart.
Step 4: Brighten with Lime and Cilantro

Remove the pot from the heat. Pour in the ¼ cup of fresh lime juice and scatter the chopped cilantro over the top. Gently nudge the fish with a spoon just a little to let the lime and herbs circulate through the broth, but keep the pieces intact. Let the residual heat warm the lime juice through for about a minute.
The stew will smell incredibly fresh and bright as the citrus hits the warm coconut broth. This late hit of lime is what keeps the flavors from tasting flat.
Step 5: Ladle into Bowls

Spoon the stew into wide, shallow bowls, making sure each serving gets a couple of fish fillets and plenty of broth with vegetables. Top with an extra pinch of fresh cilantro and serve right away, with steamed white rice or warm bread on the side.
The broth will be a glossy, pale orange with ribbons of pepper and flecks of green, and the fish should sit in tender chunks that barely need a spoon to break apart.
Tips for the Best Moqueca
- Pick a sturdy fish.: Cod and halibut hold together beautifully in the gentle simmer. Tilapia works too but can fall apart more easily, so be extra careful not to stir.
- Don’t rush the broth.: Those 10 minutes of simmering before the fish goes in let the onion, tomatoes, and peppers soften properly and the flavors come together.
- Season in layers.: A little salt in the broth before the fish, another tiny pinch on the fish itself, and a final taste at the end keeps the stew from tasting undersalted.
- Go easy on the dendê oil at first.: Its flavor is bold and earthy; you can start with 1 tablespoon, taste, and add more if you want a stronger presence.
Poaching time varies a little with how thick your fish pieces are.
| Fish thickness | Approximate poaching time |
|---|---|
| ½ inch | 4 minutes |
| 1 inch | 5 to 7 minutes |
| 1½ inches | 8 to 9 minutes |
Keeping Leftover Moqueca
- Refrigerate: Store cooled stew in an airtight container for up to 3 days. The broth thickens as it sits, so you might want to add a splash of water when you reheat it.
- Reheating: Warm gently in a saucepan over low heat, uncovered, just until the fish is heated through. Avoid bringing it to a boil, which can make the fish tough and break up the pieces.
What to Serve With Moqueca
Fluffy white rice is the classic pairing because it soaks up every last bit of the coconut broth, and a side of farofa (toasted cassava flour) brings a buttery crunch that cuts through the creaminess. A simple green salad with a sharp vinaigrette also works well to balance the richness of the stew.
Frequently Asked Questions
Can I use frozen fish?
Yes, just thaw it completely in the refrigerator overnight and pat the fillets very dry with paper towels before adding them to the pot. Extra moisture can thin the broth.
Is dendê oil absolutely necessary?
Not strictly, but it’s a defining flavor of the dish. Substitutes like annatto oil give you a similar color, though the earthy taste will be milder. The stew will still be delicious.
Can I add shrimp to this recipe?
Absolutely. Toss peeled, deveined shrimp into the broth during the last 3 minutes of cooking, just until they turn pink and curl. They cook faster than fish, so keep an eye on them.
How do I keep the fish from falling apart?
Use a firm white fish, handle it gently, and avoid stirring once the fish is in the pot. Let it poach with the lid on so the steam cooks the top while the bottom stays put.

Moqueca (Brazilian Fish Stew) Recipe
Ingredients
Method
- Heat olive oil in a large pot over medium-high. Sauté onion until softened, about 5 minutes. Add garlic and peppers, cook 2 minutes.
- Stir in tomatoes, coconut milk, stock, dendê oil, and salt. Bring to a simmer and cook uncovered for 10 minutes.
- Season fish with a pinch of salt and pepper. Nestle fish into the broth, cover, reduce heat to low, and cook until opaque, 5 to 7 minutes.
- Remove pot from heat. Add lime juice and cilantro, nudging the fish gently to distribute. Let sit 1 minute.
- Ladle into bowls, garnish with more cilantro, and serve immediately with rice.
