Quick & Easy Recipes for Everyday Cooks
Welcome to Food By Ayaka!
Brazilian Fish Stew (Moqueca) Recipe
My husband loves rich and hearty meals, but sometimes heavy dishes feel too much, especially during warmer days. This stew is different because it is light yet satisfying, and the combination of coconut milk and fresh fish is simply perfect. He always says it feels like something special without being complicated, and honestly, I agree every time I make it. Brazilian Fish Stew, also known as Moqueca, is one of those comforting dishes that feels both vibrant and soothing at the same time. It brings together tender fish, creamy coconut milk, fresh vegetables, and warm spices into one beautiful pot.
The colors alone are enough to make you smile, but the aroma while it cooks is even better. It’s the kind of meal that fills your kitchen with warmth and makes everyone curious about what’s simmering. I have made this recipe many times, and I always like to keep it simple and fresh. I use good-quality white fish, ripe tomatoes, and creamy coconut milk. Always take your time when layering the flavors, because that’s what makes this dish truly delicious and comforting.

You can serve it with fluffy white rice, some crusty bread, also with a side of fresh salad or even roasted vegetables for a complete and balanced meal.
Its Perfect For:
- Family dinners when you want something warm and comforting
- Weekend meals when you have a bit more time to enjoy cooking
- Serving guests because it looks colorful and impressive
- Light but filling meals during warm weather
- Anyone who loves seafood with rich but fresh flavors
Ingredients
- 1 1/2 lbs white fish fillets (such as cod, snapper, or tilapia), cut into large chunks
- 2 tablespoons lime juice
- 3 cloves garlic, minced
- 1 teaspoon salt
- 1/2 teaspoon black pepper
- 2 tablespoons olive oil
- 1 onion, sliced
- 1 red bell pepper, sliced
- 1 yellow bell pepper, sliced
- 2 tomatoes, chopped
- 1 cup coconut milk
- 2 tablespoons tomato paste
- 1 teaspoon paprika
- 1/4 teaspoon chili flakes (optional)
- 1/4 cup fresh cilantro, chopped
- 1 tablespoon palm oil (optional, for authentic flavor)
Kitchen Equipment You’ll Need
- Large skillet or deep pot
- Cutting board
- Sharp knife
- Mixing bowl
- Wooden spoon or spatula
- Measuring cups and spoons
How to Make Brazilian Fish Stew
Step 1
Prepare the fish: Place the fish pieces in a bowl and season them with lime juice, garlic, salt, and black pepper. Gently toss to coat all pieces evenly, making sure the fish absorbs the fresh citrus and seasoning. Cover and let it marinate in the refrigerator for at least 15–20 minutes while you prepare the rest of the ingredients. This step helps infuse the fish with flavor and keeps it tender during cooking.
Step 2
Sauté the aromatics: Heat olive oil in a large skillet or pot over medium heat. Add the sliced onions and cook for about 3–4 minutes until they begin to soften and turn slightly translucent. Stir occasionally to prevent burning. Add the garlic, bell peppers, and chopped tomatoes, and continue cooking for another 5–7 minutes until the vegetables soften and release their juices, creating a fragrant and colorful base.
Step 3
Build the stew: Stir in the tomato paste, paprika, and chili flakes (if using), mixing well so the spices coat the vegetables evenly. Pour in the coconut milk and gently stir everything together until the mixture becomes smooth and creamy. Allow the sauce to come to a gentle simmer, letting the flavors blend and develop for a few minutes without boiling too aggressively.
Step 4
Cook the fish: Carefully place the marinated fish pieces into the simmering sauce, nestling them into the liquid so they are mostly submerged. Cover the pot and let the fish cook for about 10–15 minutes, or until it is fully cooked through and flakes easily with a fork. Avoid stirring too much to prevent breaking the fish apart; instead, gently shake the pot if needed.
Step 5
Finish and serve: Drizzle in the palm oil (if using) and sprinkle the chopped cilantro over the stew. Let it cook for another 2–3 minutes to allow the flavors to come together beautifully. Taste and adjust seasoning if needed. Serve the stew hot, spooned generously into bowls, with rice on the side to soak up the rich, creamy sauce.
Tips
- Always marinate the fish for at least 15 minutes.
This helps the fish absorb the flavor deeply.
It also keeps the fish tender while cooking. - Use fresh fish whenever possible.
Fresh fish gives a cleaner and sweeter taste.
Frozen works too, but thaw it properly first. - Do not overcook the fish.
Fish cooks quickly and can become dry.
Keep an eye on it and cook just until flaky. - Let the sauce simmer gently.
A slow simmer helps flavors blend better.
Avoid boiling to keep the coconut milk smooth. - Slice vegetables evenly.
Even slices cook at the same rate.
This keeps the texture balanced in every bite. - Add herbs at the end.
Fresh cilantro tastes best when added last.
It keeps the flavor bright and fresh. - Taste and adjust seasoning.
Every ingredient can vary slightly.
Always taste before serving and adjust if needed.
Optional Ingredients
- Shrimp for added seafood flavor
- Chili peppers for extra heat
- Lemon juice instead of lime
- Spinach for added greens
- Bell peppers of different colors
- A dash of smoked paprika for depth

How to Serve Brazilian Fish Stew
I love serving Brazilian Fish Stew in deep, wide bowls so the creamy coconut broth has enough space to shine. I always pour a generous amount of sauce over the fish because that rich, silky texture is what makes every spoonful feel comforting and special. A bowl of hot steamed white rice on the side is my usual choice, and I let the sauce slowly mix into the rice as I eat. It turns into something warm, simple, and deeply satisfying.
I also like to finish the dish with a little extra freshness on top. A sprinkle of chopped cilantro right before serving adds a bright aroma that balances the creaminess of the coconut milk. Sometimes I add a light squeeze of lime juice, especially when I want a slightly tangy kick that lifts the whole dish and makes the flavors feel even more alive.
I find that this stew is also wonderful when shared at the table in a large serving pot. Everyone can scoop their own portion, which makes it feel more homey and comforting. It pairs beautifully not just with rice, but also with soft bread or even simple roasted vegetables if you want a fuller meal with different textures.
Is Brazilian Fish Stew healthy?
Yes, this dish can be a very healthy option when made with fresh ingredients. It is rich in protein from the fish and contains healthy fats from coconut milk. The vegetables add vitamins and fiber, making it balanced and nourishing.
At the same time, it is important to keep portions in mind because coconut milk is naturally rich. When enjoyed in moderation, it is both satisfying and good for you.
Variations and Substitutions
- Shrimp Moqueca
You can replace fish with shrimp for a different seafood twist.
Shrimp cooks faster, so reduce cooking time slightly.
It gives a sweeter and more delicate flavor. - Mixed Seafood Version
Combine fish, shrimp, and even mussels.
This creates a more luxurious stew.
Each bite becomes more exciting and flavorful. - Spicy Version
Add fresh chili peppers or hot sauce.
This brings warmth and a deeper kick.
Perfect for those who enjoy bold flavors. - Vegetable Moqueca
Replace fish with vegetables like zucchini and eggplant.
This makes the dish vegetarian-friendly.
It still keeps the creamy and rich texture. - Low-Fat Version
Use light coconut milk instead of full-fat.
This reduces the richness slightly.
Still delicious but a bit lighter. - Lemon Instead of Lime
Swap lime juice with lemon juice.
It gives a slightly different citrus note.
Still fresh and very tasty. - Add Potatoes
Include small chunks of potatoes.
They make the dish more filling.
Great for a heartier meal. - Tomato-Free Version
Skip tomatoes and use more coconut milk.
This creates a creamier stew.
Perfect for a milder flavor profile.
How to Store, How to Reheat
To store the stew, let it cool completely before placing it in an airtight container. Keep it in the refrigerator for up to 2 days. Because it contains fish, it’s best enjoyed fresh, but it can still be safely stored for a short time.
To reheat, place the stew in a pot over low heat and warm it gently. Stir occasionally but carefully so the fish doesn’t break apart. You can add a splash of water or coconut milk if the sauce has thickened too much.
Frequently Asked Questions About Brazilian Fish Stew
Can I use any type of fish for this recipe?
Yes, but firm white fish works best because it holds its shape during cooking.
Fish like cod, snapper, or tilapia are ideal choices.
Avoid very soft fish because it may break apart in the stew.
Do I need coconut milk for authentic flavor?
Coconut milk is one of the key ingredients that gives Moqueca its signature creamy taste.
Without it, the dish loses its traditional richness and smooth texture.
If needed, you can substitute it, but the flavor will be slightly different.
Can I make Brazilian Fish Stew spicy?
Yes, you can easily adjust the spice level to your taste.
Add fresh chili peppers, chili flakes, or hot sauce while cooking.
It still keeps its creamy base but becomes warmer and more exciting.
How do I know when the fish is fully cooked?
The fish is ready when it turns opaque and flakes easily with a fork.
It usually takes only a few minutes once added to the simmering sauce.
Be careful not to overcook it, or it may become dry and break apart.
Brazilian Fish Stew (Moqueca) Recipe
Course: Main CourseCuisine: BrazilianDifficulty: Medium4
servings20
minutes30
minutesA flavorful Brazilian Fish Stew (Moqueca) recipe made with coconut milk, fresh fish, and vibrant vegetables. Easy, comforting, and perfect for family meals or special occasions.
Ingredients
1 1/2 lbs white fish fillets (such as cod, snapper, or tilapia), cut into large chunks
2 tablespoons lime juice
3 cloves garlic, minced
1 teaspoon salt
1/2 teaspoon black pepper
2 tablespoons olive oil
1 onion, sliced
1 red bell pepper, sliced
1 yellow bell pepper, sliced
2 tomatoes, chopped
1 cup coconut milk
2 tablespoons tomato paste
1 teaspoon paprika
1/4 teaspoon chili flakes (optional)
1/4 cup fresh cilantro, chopped
1 tablespoon palm oil (optional, for authentic flavor)
Directions
- Prepare the fish: Place the fish pieces in a bowl and season them with lime juice, garlic, salt, and black pepper. Gently toss to coat all pieces evenly, making sure the fish absorbs the fresh citrus and seasoning. Cover and let it marinate in the refrigerator for at least 15–20 minutes while you prepare the rest of the ingredients. This step helps infuse the fish with flavor and keeps it tender during cooking.
- Sauté the aromatics: Heat olive oil in a large skillet or pot over medium heat. Add the sliced onions and cook for about 3–4 minutes until they begin to soften and turn slightly translucent. Stir occasionally to prevent burning. Add the garlic, bell peppers, and chopped tomatoes, and continue cooking for another 5–7 minutes until the vegetables soften and release their juices, creating a fragrant and colorful base.
- Build the stew: Stir in the tomato paste, paprika, and chili flakes (if using), mixing well so the spices coat the vegetables evenly. Pour in the coconut milk and gently stir everything together until the mixture becomes smooth and creamy. Allow the sauce to come to a gentle simmer, letting the flavors blend and develop for a few minutes without boiling too aggressively.
- Cook the fish: Carefully place the marinated fish pieces into the simmering sauce, nestling them into the liquid so they are mostly submerged. Cover the pot and let the fish cook for about 10–15 minutes, or until it is fully cooked through and flakes easily with a fork. Avoid stirring too much to prevent breaking the fish apart; instead, gently shake the pot if needed.
- Finish and serve: Drizzle in the palm oil (if using) and sprinkle the chopped cilantro over the stew. Let it cook for another 2–3 minutes to allow the flavors to come together beautifully. Taste and adjust seasoning if needed. Serve the stew hot, spooned generously into bowls, with rice on the side to soak up the rich, creamy sauce.
