There’s something magical about the first time you taste moqueca. The vibrant orange broth, fragrant with coconut milk and palm oil, the tender fish, the sweet bell peppers—it’s a dish that transports you straight to the beaches of Bahia, Brazil. I first tried moqueca at a Brazilian restaurant years ago, and I was immediately hooked. The combination of flavors was unlike anything I’d had before—rich but light, complex but comforting.
When I finally learned to make it at home, I realized it’s actually quite simple. This isn’t a dish that requires hours of prep or hard-to-find ingredients (well, except for dendê oil, but I’ll talk about that). It’s a one-pot meal that comes together in about 45 minutes and fills your kitchen with the most incredible aroma. Now it’s one of my favorite dishes to make when I want something that feels special but doesn’t require all day in the kitchen.
What Makes Moqueca Special
Moqueca (pronounced mo-KEH-kah) is a traditional Brazilian fish stew that originated in the coastal state of Bahia. It’s part of Brazil’s Afro-Brazilian culinary heritage, brought by enslaved Africans who adapted their cooking techniques to local ingredients. The result is this beautiful fusion of African, Indigenous, and Portuguese influences.
What sets moqueca apart from other fish stews is the combination of coconut milk and dendê oil (red palm oil). The dendê gives the stew its distinctive orange color and adds a unique, slightly earthy flavor. The coconut milk provides richness and sweetness that balances the acidity of the tomatoes and lime. It’s traditionally cooked and served in a clay pot called a panela de barro, which adds to the presentation and keeps the stew hot at the table.
I’ve made this recipe countless times, and what I love most is how the flavors develop as it simmers. The fish stays tender, the vegetables soften just enough, and the broth becomes this silky, aromatic sauce that you’ll want to soak up with every grain of rice.
The Complete Recipe
What You’ll Need
For the Stew:
2 pounds firm white fish fillets (cod, snapper, halibut, or mahi-mahi), cut into 2-inch chunks
1 can (14 oz) coconut milk
2 tablespoons dendê oil (red palm oil) or substitute with olive oil
2 tablespoons olive oil
1 large onion, sliced
1 red bell pepper, sliced
1 yellow bell pepper, sliced
3 large tomatoes, diced
4 cloves garlic, minced
1 lime, juiced
1 cup fish stock or water
1 bunch fresh cilantro, chopped
Salt and black pepper to taste
For Serving:
Cooked white rice
Lime wedges
Hot sauce (optional)
Farofa (toasted cassava flour) – optional but traditional
Step-by-Step Instructions
Step 1: Marinate the Fish
Place the fish chunks in a bowl and season with lime juice, salt, and pepper. Let it marinate for 15-20 minutes while you prep the vegetables. This step adds flavor and helps firm up the fish slightly.
Step 2: Sauté the Aromatics
Heat the olive oil in a large, deep skillet or Dutch oven over medium heat. Add the sliced onions and cook for about 5 minutes until they start to soften. Add the garlic and cook for another minute until fragrant.
Step 3: Build the Base
Add the bell peppers and tomatoes to the pot. Cook for about 5-7 minutes, stirring occasionally, until the vegetables start to break down and release their juices. This creates the flavorful base for your stew.
Step 4: Add the Liquids
Pour in the coconut milk and fish stock (or water). Stir everything together and bring to a gentle simmer. Let it cook for about 10 minutes to allow the flavors to meld.
Step 5: Add the Fish
Gently nestle the marinated fish pieces into the simmering broth. Spoon some of the liquid over the fish to coat it. Cover and cook for 8-10 minutes, or until the fish is cooked through and flakes easily with a fork. Don’t stir too much—you want to keep the fish pieces intact.
Step 6: Finish with Dendê Oil
Drizzle the dendê oil over the top of the stew. If you can’t find dendê oil, you can use a bit more olive oil, though you’ll miss that distinctive color and flavor. Gently stir it in.
Add most of the chopped cilantro, reserving some for garnish. Taste and adjust seasoning with salt and pepper.
Step 7: Serve
Ladle the moqueca into bowls over white rice. Garnish with the remaining cilantro and serve with lime wedges on the side. If you have farofa (toasted cassava flour), sprinkle some on top—it adds a wonderful nutty crunch.
Tips I’ve Learned Along the Way
Fish Choice Matters: Use a firm white fish that won’t fall apart during cooking. Cod, snapper, halibut, and mahi-mahi all work great. Avoid delicate fish like tilapia or sole—they’ll disintegrate.
About Dendê Oil: This red palm oil is what gives authentic moqueca its orange color and distinctive flavor. You can find it at Brazilian or African markets, or online. If you can’t find it, the dish will still be delicious with just olive oil, but it won’t have that traditional look and taste.
Don’t Overcook the Fish: Fish cooks quickly, so watch it carefully. It’s done when it’s opaque and flakes easily. Overcooked fish becomes tough and dry.
Coconut Milk Quality: Use full-fat coconut milk for the best flavor and texture. Light coconut milk will make the stew less rich and creamy.
Make It Ahead: The base (everything except the fish) can be made a day ahead. Just reheat it gently and add the fish when you’re ready to serve.
Variations I Love:
Seafood Mix: Add shrimp, mussels, or squid along with the fish
Spicy Version: Add diced jalapeños or a teaspoon of red pepper flakes
Extra Vegetables: Include okra or hearts of palm for more traditional Bahian style
Lighter Option: Use half coconut milk and half fish stock
Why This Stew is Worth Making
Moqueca is one of those dishes that looks and tastes impressive but is actually quite simple to make. It’s a complete meal in one pot—protein, vegetables, and a flavorful broth that’s perfect over rice. The combination of coconut milk, tomatoes, peppers, and fresh fish creates this beautiful balance of flavors that’s both comforting and exotic.
What I love most is how it brings people together. Moqueca is meant to be shared, served family-style from the pot in the center of the table. It’s the kind of meal that makes everyone slow down and savor each bite, soaking up that delicious broth with rice and talking about how good it is.
It’s also surprisingly healthy—packed with protein, vegetables, and healthy fats from the coconut milk. It’s naturally gluten-free and can easily be made dairy-free (it already is if you use traditional ingredients).
Serving Suggestions
Moqueca is traditionally served with:
White rice: Essential for soaking up the delicious broth
Farofa: Toasted cassava flour that adds crunch
Lime wedges: For squeezing over the top
Hot sauce: For those who like extra heat
Brazilian-style black beans: On the side
Fried plantains: For a sweet contrast
The Bottom Line
If you’re looking for a dish that’s flavorful, impressive, and relatively easy to make, moqueca is it. This Brazilian fish stew brings together the best of coastal cooking—fresh seafood, aromatic vegetables, and a rich coconut broth that’s absolutely addictive.
The first time you make it, you might feel a bit uncertain about the process, but trust me—it’s more forgiving than you think. The key is using good fish, not overcooking it, and letting the flavors simmer together. Once you taste that first spoonful, with the tender fish, sweet peppers, and creamy coconut broth, you’ll understand why this dish has been a Brazilian favorite for generations.
Have you tried moqueca before? What’s your favorite Brazilian dish? Let me know in the comments!
Recipe Card
Authentic Brazilian Fish Stew (Moqueca)
Prep Time: 20 minutes
Cook Time: 25 minutes
Total Time: 45 minutes
Servings: 4-6
Difficulty: Easy
Ingredients:
2 pounds firm white fish fillets, cut into chunks
1 can (14 oz) coconut milk
2 tablespoons dendê oil (or olive oil)
2 tablespoons olive oil
1 large onion, sliced
1 red bell pepper, sliced
1 yellow bell pepper, sliced
3 large tomatoes, diced
4 cloves garlic, minced
1 lime, juiced
1 cup fish stock or water
1 bunch cilantro, chopped
Salt and pepper to taste
Instructions:
Marinate fish with lime juice, salt, and pepper for 15-20 minutes
Heat olive oil in large pot over medium heat
Sauté onions 5 minutes until soft
Add garlic, cook 1 minute
Add bell peppers and tomatoes, cook 5-7 minutes
Pour in coconut milk and fish stock, bring to simmer
Cook 10 minutes to blend flavors
Gently add fish pieces, cover, cook 8-10 minutes until fish is cooked through
Drizzle dendê oil over top, stir gently
Add most of cilantro, reserve some for garnish
Taste and adjust seasoning
Serve over white rice with lime wedges and remaining cilantro
Tips for Success:
Use firm white fish (cod, snapper, halibut)
Don’t overcook the fish
Use full-fat coconut milk
Dendê oil is traditional but optional
Can make base ahead, add fish when serving
Storage:
Refrigerate leftovers up to 2 days
Reheat gently to avoid overcooking fish
Best served fresh
Nutrition (per serving):
Calories: ~380
Protein: 35g
Fat: 20g
Carbohydrates: 15g
Fiber: 3g

