Healthy

Coconut Milk Poached Halibut with Turmeric Rice and Charred Scallions

Gently poached halibut in fragrant coconut milk broth, served over turmeric rice with charred scallions. Ready in under an hour.

By Brian ·
Be the first to rate!
Coconut Milk Poached Halibut with Turmeric Rice and Charred Scallions

Poaching fish in coconut milk is one of those techniques that sounds fancier than it is — the liquid stays below a simmer, which means you almost can't overcook the fish as long as you're paying attention. This recipe builds a deeply aromatic broth with fresh ginger, lemongrass, and fish sauce before the halibut ever hits the pan, so every bite of fish is saturated with flavor rather than just coated by it.

The result is silky, flaky halibut with a broth that's somewhere between a Thai poaching liquid and a light curry — fragrant, gently spiced, with enough brightness from lime to keep it from feeling heavy. Turmeric rice soaks up the extra broth and turns the whole thing into a satisfying weeknight dinner that also works for a low-key dinner party. If your halibut looks like it's cooking unevenly, tilt the pan slightly and baste the thicker end with a spoon — it'll come to temperature in another 90 seconds.

↓ Jump to Recipe
🕐 Prep: 20 min | 🔥 Cook: 35 min | ⏱️ Total: 55 min

Ingredients

Servings 4

🛒 Links may earn us a small commission at no cost to you.

🍳

Recommended Gear

12-inch straight-sided sauté pan or wide shallow Dutch oven
Shop →
Medium saucepan with lid (for rice)
Shop →
Grill pan or cast iron skillet (for scallions)
Shop →
Instant-read thermometer
Shop →
Fine mesh strainer
Shop →

🛒 We may earn a small commission at no extra cost to you. We only recommend gear we'd use ourselves.

Instructions

Cook the Turmeric Rice

  1. 1. Rinse the jasmine rice in cold water until it runs mostly clear, about 30 seconds. Drain well. Combine rice, 2.5 cups water, turmeric, and 1/2 tsp kosher salt in a medium saucepan. Bring to a boil over high heat — you'll hear it start to bubble aggressively and see the water turn bright yellow. Immediately reduce to the lowest heat setting, cover tightly, and cook for 13 minutes undisturbed. Remove from heat and let steam, lid still on, for 5 more minutes. Uncover, add 1 tbsp butter, and fluff with a fork until butter melts — the rice should be tender and dry, each grain separate.
  2. 2. Keep rice covered and off heat while you prepare the broth and fish.

Build the Broth

  1. 1. Heat 2 tbsp neutral oil in your wide sauté pan over medium heat until it shimmers, about 90 seconds. Add the lemongrass stalk, ginger coins, sliced garlic, and shallot. Cook, stirring occasionally, for 3-4 minutes until the shallots are soft and translucent and you can smell the ginger and garlic turning fragrant and sweet — not brown.
  2. 2. Add the red chili flakes and stir for 30 seconds until they bloom and deepen in color. Pour in the coconut milk and chicken stock, scraping up any stuck aromatics from the pan bottom. Add the fish sauce, palm sugar, and lime juice. Raise heat to medium-high and bring to a gentle simmer — you want lazy bubbles breaking the surface, not a rolling boil. Taste the broth: it should be savory, slightly sweet, and aromatic. Adjust with a few drops more fish sauce if it tastes flat.
  3. 3. Reduce heat to medium-low and let the broth simmer uncovered for 8 minutes to concentrate slightly. Use tongs to fish out and discard the lemongrass stalk and ginger coins. The broth should look creamy ivory-yellow and coat the back of a spoon lightly.

Char the Scallions

  1. 1. Heat a grill pan or dry cast iron skillet over high heat until it's visibly smoking, about 2-3 minutes. Toss scallions with 1 tbsp neutral oil and lay them in the pan in a single layer. Leave them undisturbed for 2 minutes — you want deep char marks and a sweet, slightly smoky smell before you turn them. Flip and char the second side for 90 seconds. Transfer to a cutting board and cut into 2-inch segments. Set aside.

Poach the Halibut

  1. 1. Pat the halibut fillets completely dry with paper towels. Season both sides with 1 tsp kosher salt and 1/2 tsp white pepper. Lower the broth to a bare simmer over medium-low — bubbles should be barely breaking the surface. Gently lay the fillets into the broth in a single layer, thickest parts toward the center of the pan. The broth should come about halfway up the sides of the fish.
  2. 2. Cover the pan with a lid and poach for 7-9 minutes, depending on thickness. At 7 minutes, press the center of the thickest fillet gently with a fork — if it resists and still looks glassy, give it 2 more minutes. The fish is done when it's opaque white all the way through and yields easily to gentle pressure. An instant-read thermometer should read 130-135°F at the thickest point. Don't let the broth boil; a rolling boil will make the fish tough.

Assemble and Serve

  1. 1. Divide the turmeric rice between four wide, deep bowls, pressing it into a mound at the center. Using a wide spatula, carefully transfer one halibut fillet onto each mound — the fish is fragile, so slide the spatula fully under each piece before lifting. Ladle the hot broth generously around the base of each rice mound.
  2. 2. Top each bowl with the charred scallion pieces and a scatter of fresh cilantro leaves. Add sliced bird's eye chili if using. Serve immediately with a lime wedge on the rim of each bowl — the broth should still be steaming and the rice should be absorbing the coconut liquid as it sits.

Cook's Notes

  • Always use full-fat coconut milk for this recipe — the fat content is what gives the broth its body and prevents a watery, thin result.
  • Smash the lemongrass stalk by pressing down hard on it with the flat of a knife before adding it to the pan — this releases the essential oils that make the broth fragrant.
  • Don't skip the resting step for the rice (5 minutes off heat, lid on) — it finishes the steaming process and prevents gummy, wet grains.
  • If your halibut fillets are thinner than 3/4 inch, reduce poaching time to 5-6 minutes and check early — thin fish overcooks fast in hot liquid.
  • Season the poaching broth before adding the fish and taste again after — coconut milk mutes saltiness, so what tastes right before the fish goes in may need a small adjustment after it's plated.
💡

Pro Tips

  • The single most common failure mode with poached fish is running the liquid too hot. If you can see a rolling boil at any point once the fish is in the pan, immediately pull the pan off the burner for 30 seconds before reducing to a bare simmer — a hard boil tightens the proteins in under a minute and you'll end up with rubbery halibut.
  • Pat the fillets completely dry — and I mean really dry, pressing firmly with paper towels — before seasoning. Surface moisture creates a barrier that prevents the broth from penetrating the fish's surface, which is the whole point of this technique.
  • If you're making the broth ahead and reheating it, whisk in 2 tbsp of cold water before bringing it back to temperature. Reheated coconut milk tends to separate when brought up too quickly from cold; the cold water and slow heat help it re-emulsify smoothly.
  • Turmeric stains cutting boards, countertops, and dish towels permanently. Use a silicone or dark plastic cutting board when handling it, and wash your saucepan immediately after cooking the rice rather than letting turmeric residue dry.
  • For the cleanest broth presentation, strain it through a fine mesh strainer into a second pan after removing the aromatics and before adding the fish. This gives you a glossy, restaurant-clean liquid rather than a slightly murky home-cook result.
  • If the broth tastes one-dimensional after reducing, it usually means it needs acid — not more fish sauce. A second squeeze of lime juice right before plating (not while cooking) brightens everything without adding saltiness.

What to Serve With This

A crisp, dry Riesling from Alsace — something like a Trimbach Réserve — is the natural call here. Its stone fruit and petrol notes cut through the coconut fat without overwhelming the delicate halibut, and it has just enough residual sweetness to stand up to the fish sauce. If you're reaching for white Burgundy, go with a village-level Mâcon-Villages rather than a richer Meursault, which would compete.

For beer, a Belgian witbier like Allagash White is excellent. The coriander and orange peel in the beer echo the citrus and spice notes in the broth in a way that feels intentional rather than accidental. Avoid IPAs here — the bitterness clashes with the coconut milk.

Non-alcoholic: make a quick ginger limeade (1 tbsp fresh ginger juice, 2 tbsp lime juice, 1 tsp honey, topped with sparkling water). It mirrors the broth's ginger and lime backbone and cleanses the palate between bites.

For sides, a simple cucumber salad dressed with rice vinegar, sesame oil, and toasted sesame seeds provides crunch and acidity that the soft halibut needs alongside it. A small bowl of sliced fresh chilies and a wedge of lime on the table lets each diner tune the heat level without adjusting the whole pot.

Variations & Substitutions

For a dairy-free and vegan version, swap the halibut for two 14-oz blocks of extra-firm tofu, pressed and sliced into 1-inch planks. Reduce the poaching time to 8 minutes since tofu doesn't need to cook through — it just needs to absorb the broth. Add 1 tbsp more fish sauce OR use 2 tbsp soy sauce plus 1 tsp nori flakes to maintain the savory depth that fish sauce provides.

If halibut isn't available or is outside budget, cod loins are the closest substitute — same thickness, similar flakiness. Avoid tilapia fillets here; they're too thin and will overcook in the broth before it reduces properly. Mahi-mahi works well and holds up slightly firmer, which some people prefer.

To make this gluten-free, the recipe is already compliant as written — just confirm your fish sauce label reads gluten-free (Tiparos brand is reliably safe). If scaling up to serve 8, use a 12-inch straight-sided sauté pan or a wide Dutch oven and increase the broth by 50% (1.5 cans coconut milk, 1.5 cups stock). Don't increase fish pieces more than 6 — poach in two batches instead to avoid crowding, which drops the broth temperature and causes uneven cooking.

For a Southeast Asian variation, add 4 fresh kaffir lime leaves (torn) and 1 stalk bruised lemongrass (additional) to the broth and let it steep for 5 minutes before adding the fish. Finish with Thai basil instead of scallions for a more distinctly Thai profile.

Frequently Asked Questions

Can I use frozen halibut for this recipe?

Yes, but thaw it completely in the refrigerator overnight and pat it very dry before poaching. Frozen fish releases water as it cooks, which dilutes the broth and causes the fish to steam rather than poach. If the fillets feel soft or waterlogged after thawing, press them gently between paper towels for 5 minutes before they go in the pan.

Can I make the broth ahead of time?

Yes — the coconut broth can be made up to 2 days ahead and refrigerated in an airtight container. Reheat it gently over medium-low until it just steams before adding the fish. Don't boil it hard during reheating or the coconut milk can separate and turn grainy.

How do I store leftovers?

Store fish, rice, and broth separately in airtight containers in the refrigerator for up to 2 days. The fish will continue absorbing the broth if stored together, which makes it taste over-seasoned by day two. Reheat the fish gently in a covered pan with a splash of broth over low heat — about 3 minutes — rather than microwaving, which toughens it.

Can I freeze this dish?

Freeze the broth only — it holds well for up to 1 month. Poached halibut doesn't freeze well; the texture becomes mealy and waterlogged after thawing. The turmeric rice freezes fine in portioned zip-lock bags for up to 3 months.

What if my broth looks greasy or broken?

If the coconut milk separates into visible fat globules, your heat was too high. Pull the pan off the stove, add 2 tablespoons of cold water, and whisk briefly — it usually comes back together. Next time, keep the broth at a bare simmer (you should see lazy bubbles at the edge, not a rolling boil) before adding the fish.

Can I use light coconut milk to reduce calories?

You can, but the broth will be noticeably thinner and less rich. To compensate, reduce the broth for an extra 3-4 minutes before adding the fish. Full-fat coconut milk (Chaokoh or Aroy-D are reliable brands with higher fat content) gives you the silky consistency that makes this dish work.

What can I use instead of lemongrass if I can't find it?

Substitute the lemongrass with 1 tsp lemon zest plus 1 tsp lime zest added at the same stage. It won't have the same woody, floral depth, but it provides the citrus brightness lemongrass contributes. Avoid lemongrass paste in tubes — it's fine in a pinch but too sweet for this application; use 1 tsp if you have no other option.

How do I know when the halibut is fully cooked?

Press gently on the thickest part with a fork — it should yield and begin to flake, and the flesh should have turned from translucent to opaque white all the way through. An instant-read thermometer should read 130°F for just-done, which carries to 135°F after resting. At 145°F it's overcooked; the texture will be mealy rather than silky.

Can I serve this in bowls instead of on plates?

Bowls are actually ideal for this recipe — mound the turmeric rice in the center, lay the fish on top, then ladle the broth around the base of the rice. Deep wide bowls (like Japanese ramen bowls) work better than shallow dinner plates because you want enough broth to soak into the rice as you eat.

What if I can't find halibut?

Cod loins are the best substitute and are more widely available. Sea bass (striped or black) also works and stays slightly firmer after poaching. Avoid thin fillets under 3/4 inch thick regardless of species — they'll cook through before the broth has a chance to season them properly.

Enjoyed this recipe?

Daily Home Cookery is self-funded. If something you cooked here made dinner a little better, a coffee keeps the kitchen running.

☕ Buy me a coffee