Beverages
This fragrant fish coconut milk curry delivers the bold, aromatic flavors of Thai cuisine in a single, elegant dish. The secret lies in balancing rich coconut milk with bright lime and tamarind, creating a sauce that's both velvety and tangy.
I developed this recipe after years of perfecting the art of one-pan curries—where every element comes together without compromise.
The process begins with gently sautéing aromatic spices until fragrant, then building layers of flavor through slow simmering. Firm white fish like cod or salmon holds up beautifully to the rich sauce, absorbing its complex flavors while maintaining perfect tenderness.
What sets this recipe apart is the harmony between the creamy coconut base and the bright acidity that cuts through its richness.
By the time you serve it over steamed jasmine rice, you'll have a dish that's restaurant-quality yet simple enough for weeknight cooking. The aroma alone will draw everyone to the table, while the first bite delivers a perfect balance of spice, sweetness, and umami.
Garnish with fresh cilantro and lime wedges for that final touch of freshness.
This curry works equally well as a main course or over rice for a complete meal. The technique is straightforward but yields professional results—ideal for both beginners and experienced cooks. Let's create this fragrant, one-pan wonder that brings Thai flavors to your home kitchen.
Ingredients for fish coconut milk curry
Nine spices, one pan, restaurant-quality Thai flavors waiting to happen.
| Ingredient | Amount | Notes |
|---|---|---|
| White Fish Fillets 🐟 | 1 ½ lb | Cod or salmon preferred |
| Full-Fat Coconut Milk 🥥 | 1 can | 13.5 oz can, unsweetened |
| Yellow Onion 🧅 | 1 whole | Thinly sliced, medium size |
| Garlic Cloves 🧄 | 6 cloves | Minced, fresh preferred |
| Fresh Ginger 🌿 | 2 tbsp | Finely grated, peeled |
| Green Curry Paste 🌶️ | 2 tbsp | Store-bought or homemade |
| Fish Sauce 🍶 | 2 tbsp | Red Boat preferred |
| Lime Juice 🍋 | 3 tbsp | Freshly squeezed |
| Tamarind Paste 🍯 | 1 tbsp | Or substitute lime juice |
| Coconut Sugar 🍚 | 1 tbsp | Or brown sugar substitute |
| Fresh Cilantro 🌿 | ¼ cup | Chopped, for garnish |
| Jasmine Rice 🍚 | 1 cup | Uncooked, for serving |
| Vegetable Oil 🫒 | 2 tbsp | For sautéing |
| Salt 🧂 | 1 tsp | To taste, sea salt preferred |
| Black Pepper 🌶️ | ½ tsp | Freshly ground |
The coconut milk is the heart of this curry—Thai Kitchen or Aroy-D brand have the richest, creamiest options. If you grab the canned version, shake it well before opening since the cream separates. Fresh ginger and garlic? Trader Joe's or your local Asian market usually have the freshest. For the curry paste, Maesri or Thai Kitchen are my go-tos—they've got the perfect balance of heat and aroma. The fish fillets should be firm and fresh—Wild Alaskan salmon or cod hold up best to the long simmer.
No tamarind paste? Lime juice plus 1 tsp brown sugar works in a pinch. Short on coconut milk? Light coconut milk plus 2 tbsp heavy cream keeps it creamy. The fish sauce is non-negotiable for umami—Red Boat or Three Crabs are the best brands. If you can't find tamarind, 1 extra tbsp lime juice plus 1 tsp honey gets you close. The jasmine rice? Day-O brand is my favorite—long grain but sticks together perfectly. For the cilantro, grab the freshest bunch you can find—it makes all the difference for that final garnish.
This curry tastes even better the next day—makes 4 servings with leftovers. Store in an airtight container in the fridge for up to 3 days. Freezes beautifully for 3 months if you want to meal prep. I always double the sauce and freeze half—perfect for lazy nights when I just want to thaw and reheat. The rice reheats best covered with a damp paper towel to keep it moist.
Why You'll Love This Recipe
- Fewer Pan Dishes: I swear by this recipe because it’s one pot—no chopping boards left in the sink. Sauté the onion and garlic while the rice cooks, then toss in the fish and coconut milk. The curry thickens right there, and honestly? That’s my kind of magic.
- Creamy Without the Guilt: Full-fat coconut milk makes this rich, but it’s not heavy—it’s balanced. The ginger and garlic cut through the richness, while the fish stays tender. It’s the kind of dish that feels indulgent but leaves you satisfied, not stuffed.
- Weeknight or Weekend: Make it for a lazy Tuesday with store-bought naan, or serve it at a dinner party with steamed jasmine rice. The same flavors work for both—just adjust the portions. My roommates don’t even know when I’m winging it.
- Leftovers That Don’t Suck: This curry actually tastes better the next day. The fish stays moist, the coconut milk soaks in, and reheating takes two minutes. I’ve packed it for lunches, frozen it for busy nights, and still crave it. That’s my seal of approval.
Step-by-step instructions for fish coconut milk curry
Here's how to make this fragrant, creamy curry with minimal cleanup and maximum flavor.
Sauté the Aromatics Until Fragrant
Heat the 2 tablespoons vegetable oil in a large skillet over medium heat. Add the 1 whole yellow onion and cook for 5-6 minutes until softened and translucent. You'll know it's ready when the onion releases easily from the pan and smells sweet.
Push the onion to one side of the pan and add the 6 cloves minced garlic and 2 tablespoons finely grated fresh ginger. Cook for 30 seconds until the garlic turns golden and you can smell that fresh, aromatic punch. Be careful not to let the garlic burn—it should sizzle but not darken. Stir occasionally to prevent sticking.
Add the 2 tablespoons green curry paste and cook for 1 minute, stirring constantly. This step develops the deep, complex flavors of the curry. The paste will release its oils and become fragrant—this is when your kitchen will smell amazing. If the paste sticks to the bottom, add a splash of water to help it release.
Build the Curry Base with Coconut Milk
Pour in the 1 can full-fat coconut milk and bring the mixture to a gentle simmer over medium heat. Stir occasionally to prevent the milk from curdling. The curry will start to thicken as it simmers, and you'll see the beautiful coconut color deepen.
Add the 2 tablespoons fish sauce, 1 tablespoon tamarind paste, and 1 tablespoon coconut sugar. Stir well to combine. Let the mixture simmer for 5 minutes to allow the flavors to meld together. You should notice the sauce becoming slightly thicker and more aromatic. Taste a small spoonful and adjust seasoning with the 1 teaspoon salt and 0.5 teaspoon black pepper if needed.
Here's the thing—this is where the magic happens. The tamarind paste adds that signature tangy depth, while the coconut sugar balances the flavors. If you don't have tamarind paste, you can substitute with an extra tablespoon of lime juice, but the tamarind gives a more complex flavor profile.
Cook the Fish Until Flaky
Gently add the 1.5 lb white fish fillets to the simmering curry. Be careful not to break them apart—they should stay in large, intact pieces. Simmer for 6-8 minutes until the fish is cooked through and flakes easily with a fork. You'll know it's done when the edges start to curl slightly and the fish separates into tender flakes.
Don't overcook the fish—it should be just opaque in the center and still moist. If you see the fish starting to break apart too much, remove it from the heat for a minute to let it set. The curry sauce will continue to cook while the fish rests.
Once the fish is cooked, remove it from the skillet and set it aside on a plate. You'll want to keep it warm while you finish the sauce. The fish should be white and flaky, not dry or rubbery. If it's not flaky enough, it needs a few more minutes in the simmering sauce.
Finish with Lime and Cilantro
Return the skillet to medium heat and add the 3 tablespoons freshly squeezed lime juice. Stir well and let it simmer for 1-2 minutes to brighten the flavors. The lime juice will cut through the richness of the coconut milk, giving the curry that perfect balance of sweet, sour, and savory.
Stir in the 0.25 cup chopped fresh cilantro and cook for another 30 seconds. The cilantro adds a fresh, bright finish and a pop of color to the dish. Don't skip this step—it makes all the difference in the final presentation and flavor.
Taste the sauce and adjust the seasoning if needed. You might need a bit more fish sauce for saltiness or lime juice for acidity. The curry should be flavorful but not overpowering. Once you're happy with the taste, gently fold the cooked fish back into the sauce to coat it evenly.
Serve Over Jasmine Rice
While the curry is simmering, cook the 1 cup jasmine rice according to package instructions. Fluffy, well-cooked rice is essential for soaking up the delicious curry sauce. You'll want the rice to be hot and ready to serve when the curry is finished.
Divide the cooked jasmine rice among serving bowls and ladle the fish curry over the top. Garnish with additional chopped cilantro if desired. Serve immediately while the fish is still warm and the flavors are at their peak.
This curry is best enjoyed fresh out of the pan. The combination of tender fish, creamy coconut milk, and aromatic spices creates a dish that's both comforting and exciting. Pair it with a simple green salad or steamed vegetables for a complete meal.
Pro Tips For Making Fish Coconut Milk Curry
- Bloom the Spices First: After sautéing onions and ginger, add a pinch of turmeric and a splash of water—just enough to deglaze. Let it bubble for 30 seconds before adding coconut milk. This step builds flavor depth without curdling the coconut, and I learned this the hard way after ending up with a bland, watery sauce.
- Use Two-Part Coconut Milk: Split the full-fat coconut milk—use only the thick cream (top third) for the base, then stir in the lighter liquid (bottom two-thirds) at the end. The cream thickens the curry properly, while the lighter milk balances richness without making it greasy. (Yes, even if you’re impatient like me.)
- Salt the Fish Last: Season the fish fillets with salt and a squeeze of lime right before adding them to the curry. If you salt them earlier, they’ll release moisture and turn rubbery in the coconut milk’s heat. Trust me, this small tweak keeps the fish tender and flaky.
- Simmer, Don’t Boil: Once the fish is in, reduce heat to the lowest setting that keeps the curry at a gentle simmer—just small, occasional bubbles. Boiling will break up the fish and turn the sauce into a thin, sad soup. A steady, lazy simmer (5-7 minutes max) keeps everything intact.
Common mistakes when making your fish coconut milk curry
Overcooking the Fish
Fish cooks faster than you think—just 6-8 minutes in this rich sauce. I’ve seen beginners leave it too long, turning flaky cod into dry, rubbery strips. Use a timer and check for doneness at 6 minutes by gently flaking with a fork.
If it’s still firm, give it another minute, but don’t let it sit beyond 8 minutes or it’ll fall apart. 🐟
Skipping the Tamarind
Tamarind paste isn’t just for tang—it’s the secret to depth. Without it, your curry might taste flat or overly sweet. If you’re substituting with lime juice, add 1 extra tablespoon plus ½ teaspoon honey to mimic tamarind’s complexity.
I once made this curry with just lime and missed that rich, caramel-like note. Trust me, tamarind makes all the difference. 🍯
Ignoring the Coconut Milk Type
Not all coconut milk is created equal. Light coconut milk will make your curry watery, while full-fat ensures a luscious, velvety texture. I always use Thai Kitchen brand (the canned version) because it’s rich and affordable.
If you grab light coconut milk, stir in 2 tablespoons heavy cream to restore creaminess. The difference is night and day. 🥥
Rushing the Simmer
This curry needs time to develop its layers—don’t rush the 5-minute simmer after adding coconut milk. That’s when the spices meld and the sauce thickens. I’ve seen people crank the heat high, and the result?
A thin, flavorless mess. Keep it at a gentle simmer, and you’ll reward yourself with a sauce that’s rich, aromatic, and balanced. ⏳
Overcrowding the Pan
If your pan is too crowded with fish, the curry will steam instead of simmer, leading to soggy fish and a diluted sauce. Work in batches if needed—I’ve had to pull fish out early because the pan was overloaded.
A 10-inch skillet is ideal for this recipe. If your pan is smaller, cook half the fish first, then finish the rest. 🍳
Forgetting to Taste Test
Seasoning curry is an iterative process. You can’t just add all the spices and call it done. Taste the sauce at every critical step—after simmering the coconut milk, after adding fish sauce, and before serving.
Adjust with fish sauce (for saltiness), lime juice (for acidity), or a pinch of sugar (for balance). I’ve ruined curries by skipping this step—don’t make my mistake! 💡
Nutrition facts
Frequently asked questions
What type of fish works best for this coconut milk curry?
Firm white fish like cod, salmon, or mahi-mahi hold up perfectly in the rich sauce. Avoid delicate fish like tilapia—they'll fall apart too easily. For extra flavor, try using a mix of white and red snapper.
Can I make this curry without tamarind paste?
Yes! Use 1 extra tablespoon lime juice plus ½ teaspoon honey to mimic tamarind's tangy depth. The combination adds brightness while balancing the coconut's richness. For a stronger effect, try 1 teaspoon date syrup instead.
How do I prevent the coconut milk from curdling?
Keep the heat at a gentle simmer—never boil—and stir occasionally. Adding a splash of water if it starts to thicken too quickly helps maintain a smooth texture. Also, avoid adding acidic ingredients (like lime) until the very end.
What's the best way to store leftovers?
Store in an airtight container in the fridge for up to 3 days or freeze for 3 months. Reheat gently on low heat, adding a splash of water if the sauce thickens too much. The flavors actually improve overnight!
Can I make this curry spicier?
Add ½ teaspoon red chili flakes or 1 teaspoon sriracha to the sauce while simmering. For heat lovers, try 1 chopped Thai chili along with the garlic and ginger in Step 1. Adjust to taste at the end.
