Quick Recipe Version (TL;DR)
Quick Ingredients
- 4 catfish steaks (6–8 oz each), bone-in if possible
- 2 cans full-fat coconut milk (13.5 oz/400 ml each), divided
- 1.5 cups long-grain white rice
- 1.5 lb yuca (cassava), fresh or frozen chunks
- 6 scallions, sliced (whites and greens separated)
- 4 garlic cloves, minced
- 1 tsp ground achiote (annatto) or 1 tsp annatto seeds + 2 tbsp oil
- 2 tbsp lime juice; cilantro or cimarrón (culantro) to taste
- 1 cup water for rice + 1/2 cup water or fish stock for sauce
- 3 tbsp neutral oil; salt and black pepper
- Optional: 1 ají dulce or a small hot chili
Do This
- 1) Season catfish with 2 tbsp lime juice, 1 tsp salt, and 1/2 tsp pepper; rest 10 minutes.
- 2) Start rice: toast 1.5 cups rinsed rice in 1 tbsp oil, add 1 can coconut milk + 1 cup water + 1 tsp salt; simmer 15 minutes, then rest 10.
- 3) Boil yuca in salted water with 2 smashed garlic cloves until tender, 15–20 minutes; drain and drizzle with oil.
- 4) Make achiote oil (if using seeds): warm 2 tbsp oil with 1 tsp annatto seeds 2 minutes; strain.
- 5) In the achiote oil, sauté scallion whites, garlic, and optional chili 1–2 minutes.
- 6) Add 1 can coconut milk + 1/2 cup water/stock; slide in fish; simmer gently 10–12 minutes.
- 7) Finish with chopped cimarrón/cilantro and scallion greens; plate with coconut rice and yuca.
Why You’ll Love This Recipe
- Classic Pacific Colombian flavors: silky coconut milk, gentle achiote, and fresh herbs.
- Comforting, complete plate with coconut rice and tender yuca.
- One-pan fish and simple sides—easy for weeknights, special enough for guests.
- Flexible heat level and herb options (cimarrón or cilantro).
Grocery List
- Produce: Scallions, garlic, lime, cimarrón (culantro) or cilantro, yuca, optional ají dulce or small hot chili
- Dairy: None
- Pantry: Catfish steaks (seafood counter), 2 cans coconut milk, long-grain white rice, annatto (achiote) seeds or powder, neutral oil, salt, black pepper, fish stock or bouillon (optional)
Full Ingredients
Catfish in Coconut Milk (Bagre en leche de coco)
- 4 catfish steaks, bone-in if possible (6–8 oz/170–225 g each)
- 2 tbsp fresh lime juice
- 1 tsp fine sea salt, plus more to taste
- 1/2 tsp freshly ground black pepper
- 2 tbsp annatto (achiote) oil or 1 tsp ground achiote + 2 tbsp neutral oil
- 1 bunch scallions (about 6), whites and greens sliced separately
- 4 garlic cloves, minced
- 1 whole ají dulce or 1/2 small hot chili, split (optional)
- 1 can full-fat coconut milk (13.5 oz/400 ml)
- 1/2 cup fish stock or water (120 ml)
- 2 tbsp finely chopped cimarrón (culantro) or 1/4 cup chopped cilantro, divided
Arroz con Coco (Savory Coconut Rice)
- 1.5 cups long-grain white rice, rinsed until water runs mostly clear and drained
- 1 can full-fat coconut milk (13.5 oz/400 ml)
- 1 cup water (240 ml)
- 1 tbsp coconut oil or neutral oil
- 1 tsp fine sea salt
Boiled Yuca
- 1.5 lb fresh yuca (cassava), peeled and cut into 3-inch chunks (or 24 oz/680 g frozen yuca chunks)
- Water to cover
- 2 tsp fine sea salt
- 2 garlic cloves, smashed
- 1 tbsp olive oil or coconut oil (for finishing)
- 1 tbsp chopped cilantro or cimarrón (for finishing)
To Serve
- Lime wedges
- Reserved scallion greens and herbs

Step-by-Step Instructions
Step 1: Season the fish
Pat the catfish steaks dry. Season both sides with 2 tbsp lime juice, 1 tsp salt, and 1/2 tsp black pepper. Let stand at room temperature for 10 minutes while you start the sides. This light cure firms the fish and enhances flavor.
Step 2: Start the coconut rice
In a medium saucepan over medium heat, warm 1 tbsp oil. Add the rinsed, drained rice and 1/2 tsp of the salt; toast, stirring, for 1–2 minutes until slightly opaque and fragrant. Pour in 1 can coconut milk, 1 cup water, and the remaining 1/2 tsp salt. Bring to a boil, then reduce to the lowest heat, cover, and cook for 15 minutes. Turn off the heat and let the rice rest, covered, for 10 minutes before fluffing with a fork.
Step 3: Boil the yuca
Place yuca in a pot and cover with cold water by 1–2 inches. Add 2 tsp salt and 2 smashed garlic cloves. Bring to a boil over high heat, then reduce to a gentle simmer and cook 15–20 minutes, until a knife slides in easily and the central fibrous core pulls out without resistance. Drain well. Toss with 1 tbsp oil and a sprinkle of chopped cilantro/cimarrón. Keep warm.
Step 4: Make achiote oil and sauté aromatics
If using annatto seeds, make achiote oil: in a wide skillet over medium-low heat, warm 2 tbsp neutral oil with 1 tsp annatto seeds until the oil turns a deep orange-red and seeds sizzle gently, about 2 minutes. Strain out the seeds and return the tinted oil to the skillet. If using ground achiote, heat 2 tbsp oil, then stir in 1 tsp achiote powder for 10 seconds. Add the scallion whites, minced garlic, and optional chili; sauté 1–2 minutes until glossy and fragrant—avoid browning.
Step 5: Build the coconut base
Stir in 1 can coconut milk and 1/2 cup fish stock or water. Bring to a gentle simmer over medium heat, then reduce to low. Taste and add a pinch of salt if needed. The sauce should be velvety, lightly salted, and tinted golden from the achiote.
Step 6: Gently simmer the catfish
Slide the seasoned catfish steaks into the sauce in a single layer. Spoon sauce over the tops. Add half of the chopped cimarrón/cilantro. Cover and simmer on low—no boiling—for 10–12 minutes, turning once halfway if the steaks aren’t fully submerged. The fish is done when just opaque, flakes easily, and registers about 140°F/60°C at the thickest part. Turn off heat and rest 3 minutes. Stir in the scallion greens and remaining herbs; adjust salt and a squeeze of lime to taste.
Step 7: Plate and serve
Spoon a pool of coconut sauce onto warm plates, nestle a catfish steak on top, and garnish with herbs. Add a scoop of arroz con coco and a few pieces of boiled yuca. Serve immediately with lime wedges.
Pro Tips
- Keep the coconut sauce at a bare simmer; boiling can toughen fish and split the sauce.
- Bone-in steaks are traditional and flavorful; if using fillets, start checking doneness at 7–8 minutes.
- Rinse rice well to remove excess starch for fluffy grains.
- If using fresh yuca, be sure to remove any thick, fibrous center after cooking.
- Can’t find cimarrón (culantro)? Use cilantro and add the tender stems to the sauce for extra flavor.
Variations
- Different fish: Try snapper steaks or thick tilapia fillets; adjust simmer time accordingly.
- Spicy Choco-style: Float a whole habanero or Scotch bonnet in the sauce; remove before serving for aroma with gentle heat.
- Savory-sweet rice: For a coastal twist, add 1–2 tsp panela or brown sugar and a small handful of raisins to the coconut rice.
Storage & Make-Ahead
Cool leftovers quickly. Refrigerate fish and sauce up to 2 days; reheat gently on low with a splash of coconut milk or water to re-emulsify—do not boil. Rice keeps 4 days refrigerated; reheat covered with a sprinkle of water. Boiled yuca keeps 3 days; reheat by steaming or microwaving and finish with a drizzle of oil and herbs. You can make the rice and yuca up to 1 day ahead; cook the fish just before serving.
Nutrition (per serving)
Approximate: 830 calories; 36 g protein; 92 g carbohydrates; 38 g fat (18 g saturated); 5 g fiber; 900 mg sodium. Values will vary based on portion size and ingredients.


Leave a Reply