Quick Meals

Coconut-Braised Cod with Ginger, Lime, and Wilted Spinach

Flaky cod braised in ginger-lime coconut milk with wilted spinach. Ready in 40 minutes — weeknight dinners don't get more satisfying.

By Brian ·
Be the first to rate!
Coconut-Braised Cod with Ginger, Lime, and Wilted Spinach

<p>Cod in coconut milk is one of those combinations that sounds mild until you actually taste it — the fish drinks up the broth, the lime keeps it bright, and the ginger gives it backbone. The key move here is building a deeply aromatic base before the liquid ever hits the pan: bloom the ginger and shallots until they're sticky and fragrant, then deglaze with fish sauce and lime juice before adding the coconut milk. That two-minute step is what separates a flat, watery braise from one with actual depth.</p><p>The finished dish is silky and light — nothing heavy about it. Serve it straight from the skillet over steamed jasmine rice to soak up the broth, or with crusty bread if rice isn't happening. This is a 40-minute weeknight meal that looks like you planned ahead. If your cod is falling apart before it's cooked through, your heat is too high — drop it to medium-low and cover the pan.</p>

↓ Jump to Recipe
🕐 Prep: 15 min | 🔥 Cook: 25 min | ⏱️ Total: 40 min

Ingredients

Servings 4

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

🍳

Recommended Gear

12-inch stainless steel or nonstick skillet with a tight-fitting lid
Shop →
Microplane or fine grater (for ginger and zest)
Shop →
Fish spatula
Shop →
Instant-read thermometer
Shop →
Cutting board
Shop →
Chef's knife
Shop →

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

Instructions

Prep

  1. 1. Pat the cod fillets completely dry with paper towels — press firmly on both sides. Season evenly with 1 tsp of the kosher salt and all of the black pepper. Set aside on a plate at room temperature for 10 minutes while you prep the aromatics. Dry fish browns; wet fish steams.
  2. 2. Mince the shallots, garlic, and lemongrass. Grate the ginger on a Microplane directly into a small bowl. Zest both limes before cutting them for juice. Have everything measured and ready before the pan goes on heat — this braise moves quickly.

Build the Broth

  1. 1. Heat the coconut oil in a 12-inch skillet over medium heat until shimmering, about 90 seconds. Add the shallots and cook, stirring occasionally, until softened and just starting to turn golden at the edges, 4–5 minutes. The kitchen should smell sweet and slightly caramelized.
  2. 2. Add the garlic, ginger, and lemongrass. Stir constantly and cook for 2 minutes until deeply fragrant and the mixture looks sticky and golden — it should smell floral and sharp, like a Thai restaurant when you walk in. Don't let the garlic brown or it'll turn bitter.
  3. 3. Add the remaining 0.5 tsp kosher salt, turmeric, and brown sugar. Stir for 30 seconds until the turmeric blooms and turns the aromatics a rich golden-orange color.
  4. 4. Pour in the fish sauce and lime juice. The pan will sizzle loudly and the liquid will reduce almost immediately — scrape up any sticky bits from the bottom with a wooden spoon. Cook for 1 minute until the sharp vinegar smell mellows into something rounded and savory.
  5. 5. Pour in the coconut milk and chicken broth. Stir to combine, then bring the liquid to a gentle simmer over medium heat — small bubbles, not a boil. Taste the broth and adjust salt or lime if needed. This is your only window to season before the fish goes in.

Braise the Fish

  1. 1. Nestle the cod fillets into the simmering broth in a single layer, spooning some of the broth over the tops. Reduce heat to medium-low. Cover the skillet with a tight-fitting lid and braise for 10–12 minutes, until the fish is completely opaque, flakes at the thickest point when pressed with a fork, and registers 145°F on an instant-read thermometer. Resist lifting the lid before 10 minutes.
  2. 2. Scatter the spinach over and around the fish. Cover the lid again for 90 seconds — the spinach will wilt completely into the broth, turning bright deep green. If any leaves remain bright and stiff, push them gently under the broth with a spoon and cover for another 30 seconds.

Finish and Serve

  1. 1. Remove the skillet from heat. Add the lime zest and stir it gently into the broth without disturbing the fish. Taste one more time — if the broth tastes flat, a small squeeze of lime will bring it forward immediately.
  2. 2. Divide the fish and spinach into four wide shallow bowls. Ladle plenty of broth over each portion. Top with sliced scallions and fresh cilantro leaves. Serve immediately with lime wedges alongside and steamed jasmine rice to soak up the broth.

Cook's Notes

  • Buy cod fillets that are roughly equal in thickness — if one end tapers sharply, fold it under itself and secure with a toothpick so the whole fillet cooks evenly.
  • Full-fat coconut milk is non-negotiable here. Light coconut milk won't emulsify properly into a silky broth and the dish will taste thin.
  • Lemongrass can be skipped if unavailable, but add 1 extra tsp of lime zest to compensate for the floral note it provides.
  • Don't rush the shallot step. Properly softened and golden shallots are the flavor foundation of the broth — undercooked shallots leave a sharp, raw edge in the finished dish.
  • This recipe works at any weeknight pace — the broth can simmer on the back burner while you get the table set, and the fish only takes 10–12 minutes once it goes in.
💡

Pro Tips

  • If your coconut milk broth splits into oily pools during braising, the heat is too high. Lower it immediately, add 2 tbsp warm water, and whisk — a gentle simmer is all this dish needs, and hard boiling will break the emulsion every time.
  • The fish will continue cooking from residual heat after you remove the lid, so pull it off the heat the moment the edges turn completely opaque and the center flakes — it goes from perfect to overcooked faster than you'd think.
  • For the deepest ginger flavor, grate it on a Microplane rather than mincing — you get the juice and the fiber pulp, which dissolves into the broth and distributes heat evenly throughout.
  • If your cod fillets are thicker than 1 inch (common with Atlantic cod), add 2–3 minutes to the braising time and check temperature with a thermometer rather than guessing by eye alone.
  • Fish sauce brands vary significantly in saltiness — Red Boat 40°N is more potent than Tiparos, so if you're using a stronger brand, start with 2 tsp and taste before adding more.
  • To get cleaner presentation in the bowl, use a fish spatula to transfer the fillets first, then ladle the broth over — the fish holds together better when it's not swimming while you scoop.

What to Serve With This

<p>Steamed jasmine rice is the obvious move here, and for good reason — it soaks up the coconut broth without competing with the ginger and lime. Cook it plain; no butter, no additions. Two cups dry rice will cover four people comfortably.</p><p>For wine, reach for an off-dry Alsatian Riesling or a Gruner Veltliner. Both have enough acidity to cut through the coconut fat and the stony minerality to echo the fish without drowning the citrus. Avoid oaky Chardonnay — it'll fight the lime. If beer is more your speed, a Thai-style lager like Singha or Chang works exactly as intended: cold, crisp, and background.</p><p>A simple cucumber salad dressed with rice vinegar, a pinch of sugar, and sliced scallions makes a clean counterpoint — the cool crunch against the warm braise is a contrast that actually works. Skip heavy, creamy sides entirely.</p><p>Non-alcoholic: a tall glass of sparkling water with a squeeze of fresh lime and a few torn mint leaves holds up well alongside this dish. The carbonation cuts the richness of the coconut the same way acidity does in wine.</p>

Variations & Substitutions

<p>For a dairy-free and lighter version, swap full-fat coconut milk for light coconut milk — the braise will be thinner, so reduce the braising liquid by half before adding the fish (about 4 minutes of simmering uncovered). The flavor is still there; the body just won't be as rich. This version also cuts roughly 80 calories per serving.</p><p>Swap the cod for another firm white fish: halibut steaks, mahi-mahi, or sea bass all work well with identical timing. Thinner fillets like tilapia will cook in 6–8 minutes instead of 10–12, so watch them closely. Avoid salmon here — its fat content and strong flavor don't play well with coconut and lime the way white fish does.</p><p>To make this vegetarian, replace the cod with two 14-oz blocks of extra-firm tofu, pressed and cut into 1-inch slabs. Sear the tofu in the same skillet for 3 minutes per side before building the braise, and swap the fish sauce for 1.5 tbsp soy sauce plus 1/2 tsp rice vinegar. The braising time drops to 8 minutes since you're just heating through.</p><p>For a spicier version, add 1–2 thinly sliced Thai bird chiles with the shallots, or stir in 1 tbsp sambal oelek when you add the coconut milk. Both options scale up cleanly. The lime and coconut are sturdy enough to hold the heat without losing the dish's character.</p>

Frequently Asked Questions

Can I use frozen cod fillets?

Yes, but thaw them completely in the refrigerator overnight before cooking. Pat them very dry with paper towels — frozen fish releases more moisture, and excess water in the pan will thin your braise and prevent the fish from taking on any color. Do not cook from frozen in this recipe.

Can I make this ahead?

The broth base (everything up to adding the fish) can be made up to 2 days ahead and refrigerated. When ready to eat, reheat the broth in the skillet over medium until it's gently simmering, then add the fish and proceed. Don't braise the cod ahead — it'll overcook on reheating and fall apart.

How do I store leftovers?

Transfer cooled leftovers to an airtight container and refrigerate for up to 2 days. The fish will continue to absorb the broth, so the texture changes slightly — still good, just softer. Reheat gently in a covered skillet over low heat with a splash of water to loosen the sauce, about 5 minutes.

Can I freeze this dish?

Freezing is not recommended for the finished dish — cod becomes rubbery and grainy after freezing and thawing. You can freeze the coconut broth base alone (without the fish) for up to 1 month; thaw it overnight in the fridge, reheat, and braise fresh fish to order.

What if my coconut milk is chunky or separated in the can?

That's normal — it just means the cream has separated from the liquid. Scoop the whole contents into the pan and stir as it heats; it will homogenize within 60–90 seconds. Use full-fat Thai Kitchen or Chaokoh brand for the best texture; some budget brands are too watery.

My sauce looks broken and oily — what happened?

If the coconut milk splits into oily puddles and white solids, the heat was too high. This usually happens when the broth boils aggressively rather than simmers. Pull the pan off heat, let it cool for 2 minutes, add a 2 tbsp splash of warm water, and whisk vigorously — it should come back together. Going forward, keep it at a bare simmer: small bubbles, not a rolling boil.

Can I use baby spinach instead of full-leaf spinach?

Yes — baby spinach wilts faster (about 90 seconds versus 2–3 minutes for mature leaves), so stir it in right at the end, just before serving. It's more tender and slightly sweeter than mature spinach, which works fine here.

How do I know when the cod is fully cooked?

Fully cooked cod will be opaque all the way through and will flake cleanly when pressed gently with a fork at the thickest point. At 145°F internal temp, it's done. The flesh should look matte white, not translucent — if the center still looks glossy, give it 2 more minutes covered.

Can I double this recipe?

Yes, but use a 5-quart sauté pan or a wide Dutch oven instead of a 12-inch skillet to avoid crowding the fish. Doubling the aromatics and broth scales perfectly at 2x. The fish braising time stays the same — don't add time because you have more fish, just make sure the fillets are in a single layer.

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