Brazilian Fish Soup Moqueca with Coconut Milk and Lime

Updated November 3, 2026

Total time
52 min
prep 25 min · cook 27 min
Serves
4
portions as written
Safe temperature (USDA)
145°F / 63°C
check the thickest piece

Jump to recipe

Brazilian Fish Soup Moqueca with Coconut Milk and Lime

Moqueca is a Brazilian fish stew, especially associated with Bahia, made here with tender fish, peppers, tomatoes, coconut milk, and lime. It comes together in one pot, and its gently simmered sauce is rich without being heavy; Brazilian families and regions have their own versions, including recipes without coconut milk.

Ingredients

  • 1½ lb (680 g) firm white fish fillets, such as snapper, cod, halibut, or haddock, cut into 1-inch (2.5 cm) pieces
  • 1 tsp (5 g) fine salt, divided
  • ½ tsp (1 g) freshly ground black pepper
  • 2 tbsp (30 ml) fresh lime juice, plus lime wedges to serve
  • 2 tbsp (30 ml) olive oil or another neutral cooking oil
  • 1 medium yellow onion (about 150 g), thinly sliced
  • 1 medium red bell pepper (about 150 g), thinly sliced
  • 1 medium green bell pepper (about 150 g), thinly sliced
  • 3 garlic cloves (about 9 g), finely chopped
  • 2 medium ripe tomatoes (about 300 g), chopped
  • 1 tbsp (16 g) tomato paste
  • 1 tsp (2 g) sweet paprika
  • 1 can (13.5 oz/400 ml) full-fat coconut milk, well shaken
  • ½ cup (120 ml) fish stock or water
  • 1 tbsp (15 ml) dendê oil, optional
  • ½ cup (15 g) loosely packed chopped fresh cilantro, plus extra for serving
  • ½ small red or green chile, thinly sliced, optional

Instructions

  1. Prepare the fish and vegetables. Pat the fish dry and cut it into evenly sized pieces so it cooks at a similar rate. Season it with half the salt, the black pepper, and the lime juice; set it aside while you prepare the vegetables. Slice the onion and peppers, chop the garlic and tomatoes, and measure the remaining ingredients. This prep takes about 25 minutes, depending on how quickly you work.
  2. Soften the aromatics. Warm the olive oil in a wide, heavy pot or deep skillet over medium heat. Add the onion and cook for about 2 minutes, stirring now and then, until it begins to soften. Add the red and green peppers and cook for another 3 minutes. Stir in the garlic and optional chile and cook for 1 minute, just until fragrant; keep the garlic moving so it does not brown or turn bitter.
  3. Build the sauce. Add the chopped tomatoes, tomato paste, paprika, and remaining salt. Stir and cook for 2 minutes, breaking up a few tomato pieces with the spoon. Pour in the coconut milk and fish stock or water, then stir until the tomato paste is incorporated. Bring the sauce just to a gentle simmer and cook uncovered for 5 minutes. Avoid a hard boil, which can make the coconut milk separate and splatter.
  4. Cook the fish gently. Arrange the fish pieces in the sauce in a single layer as much as possible, then spoon sauce over the tops. Keep the pot at a gentle simmer and cook for 8 minutes, turning the pieces carefully once if needed. Check the thickest piece with a food thermometer: fish is safe at the USDA FSIS minimum internal temperature of 145°F (63°C). If a piece has not reached that temperature, simmer for another minute or two and check again. Fish should look opaque and separate easily, but use the thermometer rather than appearance alone to confirm doneness.
  5. Finish and serve. Turn off the heat and gently stir in the cilantro and dendê oil, if using. Taste the sauce and adjust with a little more salt or lime juice if needed. Let the pot stand for 1 minute, then ladle the fish and sauce into warm bowls. Take care not to break the fish into small flakes while serving.

Tips

  • Choose fish that holds together. Firm, thick fillets are easiest to handle in the pot. Cod and haddock are widely available; snapper is a closer match for many Brazilian-style preparations, while halibut is meatier and usually costs more. Avoid very thin fillets, which can cook through before the sauce is ready.
  • Use dendê oil if you can find it. Also called red palm oil, dendê gives many Bahian versions a distinctive earthy flavor and orange-red color. It is sold in some Latin American or Brazilian grocery stores. If it is unavailable, finish with olive oil; the stew will still be delicious, but the flavor will be milder and less characteristic. Paprika adds color but is not a true replacement for dendê.
  • Keep the sauce at a quiet simmer. Coconut milk does not need a rolling boil. Gentle bubbles help the fish cook evenly and keep the sauce smooth. Stir the sauce before adding fish, but once the pieces are in the pot, move them as little as possible so they stay intact.
  • Adjust the heat and acidity at the end. Chile varies in strength, so start with a small amount or leave it out and offer sliced chile at the table. Lime brightens the coconut sauce, but add it gradually after cooking; too much can dominate the fish and tomatoes.

Serving Suggestions

Serve moqueca hot in shallow bowls with its sauce spooned generously over the fish. Steamed white rice is a classic accompaniment and gives the coconut-tomato broth somewhere to go; Brazilian-style rice, cooked fluffy with a little garlic, works particularly well. Farofa, toasted cassava flour, adds a dry, lightly crunchy contrast if you can find it. It is available at Brazilian and some Latin American markets, but it is not essential.

For a simple meal, add sliced lime, extra cilantro, and a green salad dressed with a little vinegar or lime. If you want a more substantial spread, serve boiled or roasted cassava alongside the rice. Keep the side dishes mild so they do not compete with the peppers, citrus, and fish. Offer extra lime at the table rather than adding a large amount to the whole pot, since diners can then adjust each bowl.

Variations

Moqueca varies across Brazil. Bahia is especially known for versions that use coconut milk and dendê oil, while moqueca capixaba from Espírito Santo is often made without coconut milk and uses olive oil, tomatoes, and sometimes annatto for color. This recipe takes the coconut-rich route but does not claim to represent every regional or household style. For a lighter, less creamy broth, replace the coconut milk with an additional 1½ cups (360 ml) fish stock and use olive oil instead of dendê.

To make the stew with shrimp, use peeled, deveined shrimp and add them near the end; cook until opaque and 145°F (63°C) at the thickest part, checking with a thermometer. You can also use a mix of fish and shrimp, but avoid crowding the pot and allow for the different cooking times. For a vegetable-forward version, replace some of the fish with sliced zucchini or hearts of palm and simmer those in the sauce until tender before adding any fish. A pinch of ground annatto or a little extra paprika can deepen the color, though neither gives exactly the flavor of dendê.

Storage and Reheating

Cool leftovers promptly and refrigerate them within 2 hours of cooking, in a covered container. The stew keeps for 3 to 4 days in the refrigerator; for the best fish texture, plan to eat it in the first 1 to 2 days. If you expect not to finish it within that time, freeze portions in airtight, freezer-safe containers for up to 2 months for best quality. Thaw frozen portions in the refrigerator rather than on the counter.

Reheat only the amount you plan to eat, in a covered saucepan over low to medium-low heat. Stir the sauce gently and turn the fish carefully so it warms without breaking apart. Reheat leftovers to 165°F (74°C), checking the center with a food thermometer, as USDA guidance recommends. Add a splash of water or stock if the sauce has thickened in the refrigerator. Avoid repeated reheating, and discard any portion left at room temperature for more than 2 hours.

Frequently Asked Questions

What fish is best for moqueca?
Choose a mild, firm fish that can be cut into chunks and hold its shape in sauce. Snapper is a good option when available; cod, haddock, and halibut also work. Fresh or properly thawed frozen fillets are suitable. If using frozen fish, thaw it in the refrigerator and pat it dry before seasoning so excess water does not dilute the stew.

Can I make moqueca without coconut milk?
Yes. Some regional styles, including many versions from Espírito Santo, do not use coconut milk. Replace it with fish stock for a thinner, brighter broth, and finish with olive oil. The result will differ from the creamy Bahian-inspired version here, but it is a useful alternative if you do not like coconut or need to avoid it.

Can I prepare the sauce ahead of time?
Yes. Make the sauce through the gentle simmering step, cool it, and refrigerate it promptly in a covered container for up to 2 days. When ready to serve, bring it back to a gentle simmer, then add the fish and cook it through to 145°F (63°C). Cooking the fish only at serving time helps it keep a tender texture.

Why did my coconut sauce look separated?
A vigorous boil, prolonged high heat, or some coconut milk products can cause the sauce to look grainy or separated. Keep it at a low simmer and stir before adding the fish. If it separates slightly, remove the pot from the heat and gently stir in a tablespoon or two of warm water or stock; it may become smoother, though it will still taste good.

Is moqueca very spicy?
It does not have to be. The bell peppers, tomatoes, lime, and coconut milk provide flavor without much heat; the optional chile is what makes this version spicy. Leave it out for a mild pot, or serve sliced chile on the side so each person can choose. Chile heat varies, so taste a small piece before adding it.

Related

More recipes to cook

Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes

Spotted an error? Tell us and we will correct it (corrections policy).