Pescado en salsa de coco (pes-KAH-doh en SAHL-sah deh KOH-koh) means fish in coconut sauce, and in Colombia it’s cooked on both coasts: firm white fish poached in coconut milk on top of hogao, a slow-cooked base of onion, sweet pepper, garlic and tomato. If you know Thai or Kerala coconut curries, think of it as their mild, chile-free cousin, sweet from the coconut and savory from the tomato. It’s a one-pan weeknight dish that only goes wrong in two ways, and both are about heat and handling rather than ingredients.
What is Colombian fish in coconut sauce, and should you make it?
How do you make Colombian fish in coconut sauce? Season chunks of firm white fish with salt, garlic and lime. Cook onion, bell pepper, garlic, annatto and tomato down into a thick hogao, add thin coconut milk and keep it at a gentle simmer, never a boil. Poach the fish covered in the sauce for 8 to 10 minutes, to 145°F (63°C), and finish with the thick coconut cream and cilantro. Ready in 55 minutes for 4 servings.
It’s worth it if you want a fish dinner without frying, cooked in a single pan, with a sauce that begs for rice. Writing for the Colombian newspaper El Colombiano, the cook Álvaro Molina lists fish stewed in coconut milk among the traditional dishes of the Pacific coast, alongside chontaduro soup, and names chillangua, a wild cilantro-like herb, as an ingredient that’s hard to find outside the region.
When to make it. A Sunday lunch for 4 to 8, a meatless Friday, or a dinner party where you want the sauce done before anyone arrives. It’s a good first Colombian dish to cook: nothing on the shopping list is exotic once you allow for a couple of swaps.
When to skip it. If someone at the table dislikes coconut, because here it’s the main flavor. If you’re watching saturated fat, know that one can of full-fat coconut milk supplies nearly all of it.
Real time. 55 minutes on the clock, about 35 of them hands-on. Making coconut milk from a fresh coconut adds roughly 20 minutes.
Honest difficulty, easy. There’s no tricky technique. It asks for attention at two moments: when the coconut milk goes in, and when the fish does.
What you need, and how to shop for it in the US or UK
Quantities are in the recipe card: 800 g (1¾ lb) of trimmed fish for 4, about 7 oz (200 g) per person, and one 13.5 fl oz (400 ml) can of coconut milk.
Which fish to buy
You want firm white fish that holds together in a sauce. In Colombia it’s usually snapper, corvina (a type of drum) or snook, and the catfish-like bagre inland. The recipes I checked use swordfish, sea bass, halibut, cod or tilapia.
Thickness matters as much as the species. Within 3 or 4 minutes a thin ½-inch (1 cm) fillet is cooked through, long before the sauce has flavored it, and it shreds when you serve it. Ask the fish counter for a thick piece from the loin end, or buy steaks about 1¼ inches (3 cm) thick. Frozen fillets are fine: thaw them overnight in the fridge and dry them well, because the water they release thins the sauce.
Canned or fresh coconut milk
Both work. Fresh doesn’t automatically mean better.
- Canned. Use full-fat, not light. USDA data puts canned coconut milk at about 21 g of fat per 100 g, and that fat is what gives the sauce body. Brands with guar or xanthan gum resist splitting, which helps here.
- Fresh. Tastes more of coconut and less of the can. A medium coconut gives about 14 oz (400 g) of meat, per USDA, enough for both pressings in this recipe. The method is in the planning section below.
- Light coconut milk or coconut drink in a carton. Skip them. They’re mostly water, so the sauce turns thin and the fat can’t carry the hogao.
Hogao, sweet peppers and culantro
Hogao is the Colombian sofrito: onion, scallions, bell pepper, garlic and tomato, cooked until the tomato collapses. It’s the same base as the sauce on Colombian patacones, with more pepper. Annatto, sold as ground achiote in the Latin aisle, mostly adds orange color; ½ tsp sweet paprika does a similar job.
Ají dulce is a small sweet pepper with a floral smell and no heat. Latin and Caribbean grocers sometimes stock it, often frozen. If you can’t find it, use 40 g (1.4 oz) more red bell pepper.
Chillangua is Eryngium foetidum, the same plant sold as culantro or recao in US Latin markets and as ngò gai in Vietnamese ones. It tastes like a louder cilantro and stands up to heat better. Plain cilantro is what most cooks outside the Pacific use.
UK shopping. Coconut milk is in every supermarket’s world-foods aisle. For fish, ask for thick monkfish, hake loin or sea bass fillets; ground annatto turns up in Latin American online shops, and paprika covers for it.
Equipment
A deep 11-inch (28 cm) skillet or braiser with a lid, so the fish fits in one layer, and a thin fish spatula. No lid? A sheet pan or snug foil works. For fresh coconut, a blender and a fine strainer or a clean kitchen towel. An instant-read thermometer takes the guessing out of doneness.
How to plan it, from chopping to resting
55 minutes in total. The order matters because the fish sits in its lime marinade exactly as long as the sauce base takes, so it never goes past 30 minutes.
How to tell each stage is right.
- Onion and pepper → soft and glossy after 8 minutes, the onion see-through. If they brown, the heat is too high and the sauce will come out darker.
- Hogao → no visible tomato pieces, thick, with a little reddish oil at the edge.
- Coconut milk → small bubbles at the edge only. Big bubbles in the middle mean turn it down now.
- Sauce ready for the fish → it coats a spoon, and a finger drawn across the back leaves a clean line.
- Fish → 145°F (63°C) at the center of the thickest piece, or opaque all the way through and flaking easily.
Making coconut milk from a fresh coconut
- Crack it. Pierce two of the eyes with a clean screwdriver and drain the water. Tap firmly around the middle with the back of a heavy knife or a hammer until it splits.
- Pry out the meat with a blunt knife. You can leave the brown skin on; the milk comes out slightly less white.
- First pressing, the thick cream. Blend the meat in pieces with 250 ml (1 cup) hot, not boiling, water for about 2 minutes, then squeeze it through a towel.
- Second pressing, the thin milk. Blend the pulp again with 300 ml (1¼ cups) hot water and squeeze again.
The thick first pressing is saved for the end and the second goes into the sauce, much like the thin-then-thick method in Kerala fish moilee. With fresh coconut milk, leave out the 60 ml (¼ cup) water in the recipe.
What you can do ahead
- The day before → the complete sauce, hogao plus thin coconut milk, without the fish or the thick cream. It keeps 3 to 4 days in the fridge, USDA’s window for cooked leftovers. On the day, rewarm it gently, add the fish and dinner is 15 minutes away.
- The day before → homemade coconut milk, in a sealed jar in the fridge. It separates and the fat sets on top; Food Republic notes that separation doesn’t mean it has gone bad. Blitz it for 10 seconds before using.
- On the day → the fish and its marinade, 30 minutes at most before cooking. The FDA advises keeping raw fish no more than 2 days in the fridge.
Feeding 8, 12 or 20
Plan on 7 oz (200 g) of fish and about 3.4 fl oz (100 ml) of coconut milk per person, and one batch of hogao for every 4. What doesn’t scale is the pan: the fish needs a single layer.
| People | Fish | Coconut milk | How to cook it |
|---|---|---|---|
| 4 | 1¾ lb (800 g) | 1 can | one 11-inch (28 cm) skillet |
| 8 | 3½ lb (1.6 kg) | 2 cans | two skillets or a wide 16-inch (40 cm) pan |
| 12 | 5¼ lb (2.4 kg) | 3 cans | sauce in a pot, fish in sheet pans in the oven |
| 20 | 8¾ lb (4 kg) | 5 cans | sauce the day before, fish in 3 sheet pans |
For a crowd, I make the sauce in a big pot, divide it between sheet pans, lay the fish in one layer, cover with foil and bake at 350°F (180°C) until the center reads 145°F (63°C); in my oven that takes 15 to 20 minutes. If it has to wait, USDA says to hold hot food above 140°F (60°C).
Before you start, splitting, breaking, safety and allergens
Safe doneness. The FDA’s safe minimum for fish is 145°F (63°C) at the center, or flesh that’s opaque and separates easily with a fork.
Why coconut milk splits, and how to rescue it
Coconut milk is an emulsion of fat and water held together by its own proteins. Tasting Table and Food Republic both put the trouble point at about 176°F (80°C): held above it for long, the proteins change, the emulsion breaks, and you get curds with a slick of oil on top. Three things cause it:
- A hard boil → the main one. Keep it at a tremble, and keep it short: 8 to 10 minutes with the hogao, 8 to 10 with the fish.
- Cold milk into a hot pan → the temperature shock splits it too. Leave the can out for an hour or store it in the pantry.
- Acid mid-cook → that’s why the fish goes in without its marinade liquid and the lime goes on the table.
If it splits anyway. It’s safe, just not pretty. Turn off the heat, lift the fish onto a plate, whisk 1 tbsp cornstarch into 2 tbsp water and stir it into the sauce a little at a time, as Tasting Table suggests. Within 2 or 3 minutes the sauce comes back together. Return the fish.
Keeping the fish in one piece
- Firm species, thick cut → 1¼ inches (3 cm).
- Dry it before seasoning → surface water dilutes the sauce and steams the fish.
- No more than 30 minutes in lime → beyond that the outside turns chalky and crumbles in the pan.
- One layer, no spoon → swirl the pan, or turn each piece once with a spatula.
- Don’t overshoot 145°F (63°C) → past it the flakes separate on their own. Pull it a minute early and let it rest covered.
Common mistakes
- Thin, watery sauce → light or carton coconut milk, or not simmered for the full 8 to 10 minutes. Uncover and let it tremble a few minutes more before the fish goes in.
- Oily sauce with curds → it boiled. See above.
- Tastes only of coconut → the hogao was rushed. Onion and tomato must be fully broken down first.
- Dry, stringy fish → thin fillets or too long. Thick chunks and a thermometer.
- Tastes of lime → marinated over 30 minutes, or the marinade went in with the fish.
Heat level, 0 out of 5. Neither ají dulce nor bell pepper is hot. Put hot sauce on the table for anyone who wants it.
Kids? Usually yes: the sauce is mild and slightly sweet. Use boneless fillets for them.
Allergens. Fish. Coconut isn’t one of the 14 allergens that must be declared in the UK and EU, but coconut allergy exists, so ask if you’re cooking for others. The dish is free of gluten, dairy and eggs, provided your annatto or seasoning blend has no added flour.
Which version to make
- Short on time → canned coconut milk and hogao made ahead. Warm it, add the milk, 8 minutes, then 10 for the fish: about 25 minutes.
- With fresh coconut → the coastal way, with two pressings. Adds about 20 minutes.
- For a party → sauce the day before and the fish baked in sheet pans, as in the table above.
- Lighter → half the can, half water or fish stock. About 93 kcal less per plate, a thinner and less sweet sauce.
- With shrimp → peeled shrimp for the last 3 minutes, until pink. For a full seafood version with cream, the Colombian seafood stew is its own recipe.
- Vegetarian → there’s no traditional one. The same sauce works with cooked chickpeas or hearts of palm, 10 minutes on low.
How it compares with encocado, moqueca and other fish stews
| Dish | Base | What sets it apart |
|---|---|---|
| Colombian fish in coconut sauce | hogao and coconut milk | chunks of fish in a thick sauce; 55 min for 4 |
| Ecuadorian encocado | sofrito and coconut milk | marinade with lime, orange, cumin and ground coriander, per Laylita |
| Bahian moqueca | coconut milk and dendê palm oil | the palm oil; the Espírito Santo version skips both, per TudoGostoso |
| Colombian tapao | little water, green plantain | covered pot, chillangua; “not a soup”, says cook Hamilton Urrutia to Radio Nacional |
| Colombian river fish stew | broth with cassava, plantain, potato | whole river fish from the Magdalena; 70 min for 6 |
If you’d rather have fish without a sauce, Colombian beach-style fried mojarra is the crunchy, whole-fish route.
What it costs to make in the US
There’s no official US retail price series for fish fillets or canned coconut milk, so I can’t give you an honest total. What I can price, with the BLS average for tomatoes (August 2026) and USDA AMS retail averages from October 2026 for the produce: tomatoes $1.09, onion $0.40, one lime $0.50, a bunch of cilantro $0.97 and garlic $0.16, about $3.12 in all.
To finish the sum, take the per-pound price on your fish label and multiply by 1.76, then add one can of coconut milk. The fish is almost always most of the bill; catfish is the budget pick that still holds together, and snapper or halibut the splurge.
Real yield. 4 plates, each with about 7 oz (200 g) of fish and plenty of sauce. With coconut rice and patacones it stretches to 5 light eaters.
What to expect, how to serve it and how to store leftovers
Taste and texture. A thick, orange sauce, sweet from coconut and onion with a savory tomato base, and moist fish that flakes apart when you press it with a spoon. The cilantro at the end keeps it fresh.
How to serve it. In shallow bowls with plenty of sauce. On the side, Colombian coconut rice on the Caribbean coast or plain rice, patacones and a tomato-onion salad. To drink, a frosty coconut lemonade. Leftover sauce makes a quick base for Colombian shrimp rice the next day.
Fridge. USDA FSIS allows 2 hours at most at room temperature and 3 to 4 days in the fridge at 40°F (4°C) or below, covered.
Freezer. Cooked fish keeps 4 to 6 months frozen, per FoodSafety.gov. The sauce separates when thawed; it isn’t spoiled, and gentle heat with stirring brings it back. I freeze the sauce on its own and add fresh fish when I use it.
Reheating. Warm the sauce alone over low heat and add the fish last, covered, just until the center reaches 165°F (74°C), the FSIS target for leftovers. In the microwave, cover it and use half power in 1-minute bursts; full power splits the sauce and turns the fish rubbery.
Colombian fish in coconut sauce FAQ
What’s the best fish for coconut sauce? Firm white fish: red snapper, halibut, mahi-mahi, monkfish or catfish. Thin tilapia and swai or basa tend to fall apart.
Why did my coconut milk curdle? It boiled hard, went cold into a very hot pan, or met acid mid-cook. Keep it at a tremble and add lime at the table.
Can I fix a split coconut sauce? Yes. Take it off the heat, remove the fish, and stir in a slurry of 2 tbsp water and 1 tbsp cornstarch, a little at a time.
How long does the fish cook in the sauce? About 8 to 10 minutes, covered on low, for 1¼-inch (3 cm) chunks, until 145°F (63°C) at the center. Thin fillets are done in 3 or 4 minutes, so add them later.
Is canned coconut milk okay? Yes, full-fat and at room temperature. Spoon off the thick cream for the end and cook the sauce with the rest.
Can I use frozen fish? Yes. Thaw it overnight in the fridge and pat it very dry first.
Is this the same as encocado? In Colombia the names overlap. The Ecuadorian encocado usually has orange juice and cumin in the marinade; the Colombian version builds on hogao.
Is it spicy? No. It’s mild and slightly sweet; serve hot sauce on the side.
What do you serve with it? Coconut rice or white rice, patacones and a simple salad.
Nutrition per serving
Per serving (about 7 oz / 200 g fish and a quarter of the sauce, without rice or plantains), calculated ingredient by ingredient from USDA FoodData Central (SR Legacy) with this recipe’s quantities, using snapper and canned coconut milk:
- Calories: 497 kcal
- Protein: 45 g
- Carbohydrates: 14 g
- Fat: 30 g, of which 19 g saturated
- Fiber: 3 g
- Sugars: 6 g
- Sodium: 733 mg
Most of the sodium, 581 mg per serving, comes from the salt itself. USDA lists no fiber or sugar for canned coconut milk, so those two figures run slightly low.
I grew up in Venezuela eating fish fried or in soup, and I learned fish in coconut sauce in Colombia, mostly by watching other cooks. My first attempts failed exactly where yours might: a boiling, curdled sauce, and fish broken into threads because I stirred it like a beef stew. These days I make it with catfish more often than snapper because it’s cheaper and holds up just as well, and I still pick the bones out for Dylan before his plate leaves the stove. Josnaisis.