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.

A pot of Brazilian fish stew with plates beside it.
Want to save this recipe?
Just enter your email and get it sent to your inbox! Plus you’ll get new recipes from us every week!
Photo of Olivia in her kitchen, founder of Primavera Kitchen

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.

What is moqueca?

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.

Ingredients to make Brazilian Fish Stew

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.

Ingredients needed to make moqueca de peixe.

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.

Four raw fish fillets, seasoned with salt and pepper, are placed in a white rectangular baking dish on a light gray textured surface—ideal for preparing a vibrant Brazilian Fish Stew.

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.

Chopped onions, peppers, and spices sizzling in oil at the bottom of a large white pot on a light countertop—a delicious foundation for an authentic Brazilian Fish Stew.

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

A white pot with handles contains simmering tomato sauce with chunks of tomatoes and herbs, reminiscent of the flavorful base used in Brazilian Fish Stew, on a light gray surface.

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.

A white pot filled with sliced red, yellow, and green bell peppers and onions, reminiscent of the vibrant ingredients used in a classic Brazilian Fish Stew, placed on a light gray surface.

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.

A white pot filled with raw white fish fillets, colorful sliced bell peppers, and chopped herbs on top, ready to be cooked—perfect for preparing a flavorful Brazilian Fish Stew.

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.

Four pieces of white fish are simmering in a creamy yellow sauce with herbs and vegetables, reminiscent of a classic Brazilian Fish Stew, in a white, round Dutch oven on a light gray surface.

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.

Overhead view of a pot of Brazilian fish stew.

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)

3.75 from 179 votes
Author: Olivia Ribas
Servings4 People
Prep Time10 minutes
Cook Time15 minutes
Total Time25 minutes
Traditionally called moqueca de peixe, this Brazilian fish stew simmers white fish in coconut milk, tomatoes, and bell peppers. It comes together in one pot in about 30 minutes, no palm oil needed.

Video

Save this recipe
Enter your email and we’ll send it to you. Plus, you’ll get recipes & tips every week!

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.
    Four raw fish fillets, seasoned with salt and pepper, are placed in a white rectangular baking dish on a light gray textured surface—ideal for preparing a vibrant Brazilian Fish Stew.
  • 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.
    Chopped onions, peppers, and spices sizzling in oil at the bottom of a large white pot on a light countertop—a delicious foundation for an authentic Brazilian Fish Stew.
  • Spread diced tomatoes on the bottom of the pot.
    A white pot with handles contains simmering tomato sauce with chunks of tomatoes and herbs, reminiscent of the flavorful base used in Brazilian Fish Stew, on a light gray surface.
  • Then, add bell peppers and sliced onions.
    A white pot filled with sliced red, yellow, and green bell peppers and onions, reminiscent of the vibrant ingredients used in a classic Brazilian Fish Stew, placed on a light gray surface.
  • Add the fish fillets and cilantro, parsley and coriander on top. Season with a pinch of salt and pepper again.
    A white pot filled with raw white fish fillets, colorful sliced bell peppers, and chopped herbs on top, ready to be cooked—perfect for preparing a flavorful Brazilian Fish Stew.
  • 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.
    Four pieces of white fish are simmering in a creamy yellow sauce with herbs and vegetables, reminiscent of a classic Brazilian Fish Stew, in a white, round Dutch oven on a light gray surface.
  • Taste and adjust seasonings if desired. Garnish with chopped fresh cilantro and parsley. Serve with rice and salad.
    A white pot filled with fish fillets in an orange creamy sauce, reminiscent of a classic Brazilian Fish Stew, is garnished with red bell pepper slices and fresh herbs. A plate with a fork and knife sits nearby on a light countertop.

Notes

To store: Keep this moqueca recipe in the fridge for up to 4 days in an airtight container. 
To reheat: Gently reheat the stew on the stovetop when ready to enjoy. 
To freeze: Always allow the stew to cool to room temperature before freezing. Freeze the soup in an airtight freezer-safe container for up to 3 months. Thaw in the fridge overnight before reheating.

Nutrition

Serving: 1/4, Calories: 368kcal, Carbohydrates: 18g, Protein: 25g, Fat: 22g, Cholesterol: 49mg, Sodium: 457mg, Potassium: 930mg, Fiber: 4g, Sugar: 7g

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.

Olivia Ribas

Welcome

Hi, I'm Olivia


I’m so happy you’re here!! For the last 12 years, I’ve been sharing easy, quick, and family-friendly recipes like chicken, salmon, ground meat and pork chops (total reader favorites!), perfect for stress-free weeknight dinners made with fresh, seasonal ingredients.

Explore More

Leave a comment

Your email address will not be published. Required fields are marked *

Rate This Recipe:




3.75 from 179 votes (155 ratings without comment)

74 Comments

  1. Rich says:

    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.

    1. Olivia Ribas says:

      Happy to hear that you both enjoyed this recipe!

  2. Ángel says:

    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

    1. Olivia Ribas says:

      Awesome! Happy you liked it!

  3. Florence Aziz says:

    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.

    1. Olivia Ribas says:

      Happy you liked it!

  4. Susan says:

    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.

    1. Olivia Ribas says:

      Happy you liked it!

  5. Christina Gray says:

    My husband LOVES this and so do I.
    The spice and flavor make your mouth go ‘Mmmmmm’.

    1. Olivia Ribas says:

      Aww I’m so happy to hear that!

  6. Lucia says:

    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!

    1. Olivia Ribas says:

      It does! It is on the instruction number 1 of the recipe.

  7. Lyn says:

    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.

    1. Olivia Ribas says:

      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! 😊

  8. John Ninan says:

    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.

    1. Olivia Ribas says:

      You’re very welcome. Happy you liked it 😉

  9. Annie says:

    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!

    1. Olivia Ribas says:

      Thank you for the feedback! Trying it with salmon sounds delicious. So glad you’ll make it again!😊

  10. Dave Hein says:

    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.

    1. Olivia Ribas says:

      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.

  11. Dave Hein says:

    Just leaving a 5-star comment because I forgot to select the stars in my original comment.

    1. Olivia Ribas says:

      Thank you so much 😉

  12. Rebecca B says:

    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.

    1. Olivia Ribas says:

      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. 💛

  13. Sonia Kuczynski says:

    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
    .

    1. Olivia Ribas says:

      That sounds absolutely delicious. So happy it turned out well and that your husband enjoyed it. Thanks so much for sharing what you did! 💛

  14. pam foss says:

    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 .

    1. Olivia Ribas says:

      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! 💛

  15. Keshia says:

    Added a little cumin as well. I have made it twice and this will definitely in the rotation. Easy and flavorful!

    1. Olivia Ribas says:

      Happy to hear that 😉

  16. Christina says:

    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.

    1. Olivia Ribas says:

      You comment made my day 😉