Moqueca is a Brazilian fish stew simmered in coconut milk, tomatoes, and bell peppers until the broth turns rich and just a little spicy. It is traditionally called moqueca de peixe, and it comes together in one pot in about 30 minutes, no dendê oil or hard to find ingredients required. I make mine with cod and olive oil instead of the traditional palm oil, since that is what is easy to find here in Toronto, and it is every bit as good.


The Dish That Tastes Like Home
I grew up watching my mother and my grandmother cook every single day, and moqueca was one of those dishes that showed up again and again, especially when the whole family gathered around the table. My grandmother always said to eat and appreciate food, and this stew is exactly that kind of dish. It is humble, it uses what is on hand, and it tastes like more effort went into it than it actually takes.
Now that I live in Toronto, I make moqueca when I want a taste of Brazil on a weeknight. Thomas asks for extra rice to soak up the broth every single time, which tells me it does not matter where you grew up, this stew wins people over.
I usually serve mine with a simple side of Fluffy White Rice, the same way my family always did, so every spoonful gets a little broth with it.
Moqueca (pronounced moh KEH kah) is a Brazilian fish stew made with white fish, coconut milk, tomatoes, and peppers, brightened with lime juice and fresh cilantro. It carries African, Indigenous, and Portuguese influence, which is part of what gives it that deep, layered flavor you do not get from a quick tomato based stew. Traditionally, moqueca is cooked in a clay pot, but a Dutch oven works just as well since it heats evenly and holds its temperature.
There are two main styles, from two different Brazilian states. Moqueca Baiana, from Bahia in the northeast, uses dendê oil, a red palm oil, along with coconut milk. Moqueca Capixaba, from Espirito Santo in the southeast, skips the coconut milk entirely and uses olive oil with a light tomato broth instead.
I make mine closer to the Baiana style since I love how the coconut milk makes the broth, but I use olive oil in place of dendê oil, since red palm oil is not something I can easily find here in Canada. If you want to try the Capixaba version instead, swap the coconut milk for an equal amount of tomato broth and you will get a lighter, brighter stew that is completely different but just as good.
All ingredients and their amounts are listed in the recipe card at the bottom of this post.
Cod Fish: I use cod because it is a firm white fish that holds together in the pot instead of flaking apart while it simmers. Mahi mahi and sea bass work just as well if that is what you can find.
Pro Tip: buy fillets that are close to the same thickness so they finish cooking at the same time, and double check for pin bones before you start, since they are easy to miss and unpleasant to bite into. I have made this with frozen fillets plenty of times too. Just thaw them fully first, since frozen fish releases extra water that thins out the broth.
Coconut Milk: Full fat, canned coconut milk is what gives this stew its rich, slightly sweet base, which is the defining feature of Moqueca Baiana. I recommend avoiding the refrigerated carton kind, it is too thin and will not give you the same body. If you cannot have coconut, I have tested this with an equal amount of tomato broth instead (closer to the Moqueca Capixaba style), and it works well. The stew is lighter and less rich, but still full of flavor.
Bell Peppers: I use a mix of green, red, and yellow bell pepper for color as much as flavor. A stew this simple depends on the vegetables looking as good as it tastes, and the mix of colors makes it feel special without any extra effort.
Tomato Paste: This thickens the broth and deepens the flavor, but here is what I learned after making this dozens of times: whisk the tomato paste into the coconut milk before you pour it into the pot, rather than adding it separately. Several readers told me the same thing after making this recipe, and they are right. Stirring the paste in after the fish is already in the pot means more stirring, and more stirring is exactly what breaks the fish apart.

How to Make This Moqueca Recipe
Before you start: have your fish marinating and your vegetables prepped, since once this stew starts cooking it moves fast and you will not have time to chop.
1. I season the fish first and let it rest. Place the fish in a large bowl with salt, pepper, and lime juice, then refrigerate for about 15 minutes. This step does double duty. The lime seasons the fish, and it also firms up the flesh slightly, which helps it hold together once it hits the simmering broth.

2. I bloom the garlic and hot pepper in oil before adding anything else. A quick minute in warm olive oil is enough to release their flavor into the fat, which carries through the entire stew. Any longer and the garlic will start to burn and turn bitter, so keep an eye on it.

3. I spread diced tomatoes on the bottom of the pot.

4. I layer the peppers and onion in next, letting them soften slightly in the same oil before the fish goes in. This gives the vegetables a head start so they finish tender at the same time as the fish, instead of turning up half raw at the end.

5. I nestle the fish on top rather than stirring it in. Season again with a pinch of salt and pepper, then scatter the cilantro, parsley, and coriander over everything. Keeping the fish on top instead of buried and stirred is what keeps the fillets intact through the rest of cooking.

6. I whisk the tomato paste into the coconut milk before pouring it over everything. This is the change I make every time now, after readers pointed out that stirring the paste directly into the pot means extra stirring, and extra stirring is what breaks up the fish. Whisking it in beforehand solves that completely.

7. I bring it to a boil, then cover and drop it to a simmer for 15 minutes. You are looking for the onions to turn tender and the fish to turn opaque and flake easily. Resist the urge to stir during this window. The stew needs almost no help once it is covered, and every stir is a chance to break the fish apart.
8. I taste and adjust right at the end, since the coconut milk mellows the seasoning as it cooks and usually needs a little more salt or lemon juice than you would expect. Garnish with fresh cilantro and parsley before serving.

Olivia's Recipe tips
Do not walk away once the stew is simmering. Fifteen minutes sounds like plenty of buffer, but this stew goes from perfectly cooked to overcooked fish fast. Set a timer instead of guessing.
Shrimp works beautifully in this recipe, but add it later. Since shrimp cooks in just a couple of minutes, I add it after the stew has simmered and the onions are already tender, rather than at the same time as the fish.

Moqueca Recipe (Brazilian Fish Stew)
Video
Ingredients
- 1 lb cod fish (or other firm white fish, like mahi mahi or sea bass) , rinsed and pin bones removed.
- 2 tbsp lime juice
- Salt and freshly ground black pepper to taste
- 2 tbsp olive oil divided
- 3 garlic cloves minced
- 1 hot pepper finely chopped (optional)
- 1 cup diced tomatoes (from a can)
- 1 green bell pepper seeded and sliced
- 1 red bell pepper seeded and sliced
- 1 yellow bell pepper seeded and sliced
- 1 medium white/yellow onion sliced
- 1 small bunch of cilantro chopped
- 1 small bunch of parsley chopped
- 1 teaspoon coriander
- 14 ounce coconut milk can
- 1 ½ tbsp tomato paste
Instructions
- Place fish in a large glass bowl and season with salt, pepper and lime juice. Set aside in the fridge for about 15 minutes.
- In a large Dutch oven pot (or clay pot), add 2 tablespoon of olive oil over medium heat. Add the garlic and hot pepper and cook for about 1 minute.
- Spread diced tomatoes on the bottom of the pot.
- Then, add bell peppers and sliced onions.
- Add the fish fillets and cilantro, parsley and coriander on top. Season with a pinch of salt and pepper again.
- Whisk the tomato paste into the coconut milk until smooth. Pour the mixture over the fish and vegetables in the pot. Bring to a boil over medium-high heat. Then cover, lower the heat to a simmer and cook for 15 minutes, or until the onions are tender and the fish are fully cooked.
- Taste and adjust seasonings if desired. Garnish with chopped fresh cilantro and parsley. Serve with rice and salad.
Notes
Nutrition
Nutrition information is automatically calculated, so should only be used as an approximation.
Did You Make This?
Follow @primaverakitchen on Instagram, snap a photo, and tag it #primaverakitchen. We’d love to see your recreation.





















Really easy and delicious recipe. My wife and I loved it, and I will definitely make it again.
The only thing I changed was that I whisked the tomato paste into the coconut milk before adding it to the pot so I wouldn’t have to over-stir the stew to incorporate the paste.
Happy to hear that you both enjoyed this recipe!
Tudo bem! This was made for my dear grandparents, to warm up on such a freezing snowy day. We added three medium size potatoes and a small sweet potato. Very delicious, Tudo bem
Awesome! Happy you liked it!
Tried this recipe today and it was so tasty. I used fish with bones. I followed the suggestion in one of the comments. I mixed the tomato paste with the coconut milk before pouring to the pan. I’ll be making this again.
Happy you liked it!
Utterly delicious! So simple, so fresh and light, and beautiful as well. Great with brown rice. It’s a great way to use cod. Thank you for this wonderful recipe.
Happy you liked it!
My husband LOVES this and so do I.
The spice and flavor make your mouth go ‘Mmmmmm’.
Aww I’m so happy to hear that!
The recipe doesn’t say when to incorporate the 2 spoons of lime😜. I did it before covering the put. It’s very tasty. Delicious!
It does! It is on the instruction number 1 of the recipe.
A wonderful recipe, delicious with such delicate flavours. I used sea bass loins, had to add some lime juice as I only had half a lime, and used ketchup as I had no tomato paste (awful, I know) but it worked. I only used some of the tomato juice from the can as the recipe did not indicate how much. Will definitely make this again.
Thank you for your feedback! I’m so glad it turned out delicious despite the substitutions. The lime juice and ketchup were creative adjustments, and I’m happy to hear it worked. Looking forward to you making it again! 😊
I have made Moqueca de Peixe several times. Since I did not have cod, I made it with frozen flounder today. Came out very well. I eat the stew on a bed of cooked rice.
Thank you for sharing the delicious recipe.
You’re very welcome. Happy you liked it 😉
Thank you, we liked this! Next time, I’ll try it with salmon. I agree that the recipe should be modified so that the tomato paste and coconut milk should be stirred in before adding the fish – then it would be a 5. Will make it again!
Thank you for the feedback! Trying it with salmon sounds delicious. So glad you’ll make it again!😊
I loved this. I substituted shrimp for the fish, but still used the marinade. Because the shrimp cook quickly (a few minutes), I added them after all the other ingredients and after the whole thing had simmered for a while and the onions had become tender. I served it with brown rice (only because I was out of white rice). Delicious.
Yes this recipe works well with shrimp too and it’s good that you added it after all the other ingredients because it does cook so fast.
Just leaving a 5-star comment because I forgot to select the stars in my original comment.
Thank you so much 😉
Is the Moqueca Capixaba substitution of Tomato Broth the same quantity as the Coconut Milk in this recipe? I have a terrible Coconut allergy that throws a real wrench in a lot of recipes these days. Would love for you to share the recipe for Moqueca Capixaba. Your recipes have been life changing for my sister and me, both of whom have very busy work schedules and require a lot of planning and prep to avoid having food delivered most nights.
Great question! Yes — if you’re making Moqueca Capixaba, you can substitute the coconut milk with the same amount of tomato broth. It keeps the stew light, flavorful, and still very authentic to the Espírito Santo version of the dish.
I’m so glad the recipes have been helpful for you and your sister — that truly means a lot. 💛
Hi Olivia
I used 35% Cream instead as My Husband doesn’t Like Coconut Milk
Also I added 1 teaspoon Dijon ,I used Basa Filets , used Orange, Red, Yellow Peppers Thinly Sliced in Circles for Color, Cilantro and Chopped Parlsey, Lemon Juice and 2 Tablespoon White Wine as My Husband Hates Lime Juice. 1 Small Can Diced Tomatoes with Spices .
Served Over Basmati Rice . DELICIOUS
.
That sounds absolutely delicious. So happy it turned out well and that your husband enjoyed it. Thanks so much for sharing what you did! 💛
really good recipe, i subbed chicken thighs cut into cubes, no fish on hand, and it turned out great, will make again with fish and maybe a tomato broth version .
So happy you enjoyed it! 😊 Chicken thighs are a great swap, and a tomato broth version with fish sounds delicious. Thanks so much for sharing — I’m glad it’s a make-again! 💛
Added a little cumin as well. I have made it twice and this will definitely in the rotation. Easy and flavorful!
Happy to hear that 😉
I made this recipe for dinner last night and it was super delicious. My husband said that this is definitely a keeper. We loved it.
You comment made my day 😉