Thai Fish Stew with Coconut Milk, Lime, and Fresh Herbs

Updated November 4, 2026

Total time
50 min
prep 25 min · cook 25 min
Serves
4
portions as written
Safe temperature (USDA)
145°F / 63°C
check the thickest piece

Jump to recipe

Thai Fish Stew with Coconut Milk, Lime, and Fresh Herbs

Thai fish stew is a coconut-milk broth simmered with curry paste, vegetables, tender fish, lime, and fresh herbs. This home-style version draws on familiar Thai flavors without claiming to represent every regional or family variation; it is a satisfying one-pot meal that balances creamy, savory, tangy, and lightly spicy notes.

Ingredients

  • 1 tablespoon neutral oil (15 ml), such as canola or avocado oil
  • 1 small yellow onion, thinly sliced (about 5 ounces / 150 g)
  • 1 red bell pepper, thinly sliced (about 5 ounces / 150 g)
  • 1 stalk lemongrass, tender inner portion finely minced (about 15 g)
  • 1 tablespoon finely grated fresh ginger (about 15 g); use galangal instead if available
  • 2 tablespoons Thai red curry paste (about 30 g), or more to taste
  • 1 can full-fat coconut milk, well shaken (13.5 ounces / 400 ml)
  • 1½ cups low-sodium fish or chicken broth (355 ml)
  • 1 tablespoon fish sauce (15 ml)
  • 1 teaspoon granulated sugar (4 g)
  • 6 ounces green beans, trimmed and cut into 1-inch pieces (170 g)
  • 6 ounces baby bok choy, halved lengthwise or cut into bite-size pieces (170 g)
  • 1½ pounds firm white fish fillets, such as cod, haddock, or snapper, cut into 1-inch chunks (680 g)
  • 2 tablespoons fresh lime juice (30 ml), plus lime wedges for serving
  • ¼ teaspoon fine salt (about 1.5 g), or to taste
  • ⅛ teaspoon ground black pepper (about 0.3 g)
  • ½ cup loosely packed fresh cilantro leaves, roughly chopped (about 15 g)
  • ½ cup loosely packed Thai basil leaves (about 10 g), or regular basil
  • 1 small Thai chile, thinly sliced (about 5 g), optional

Instructions

  1. Prepare the ingredients. Slice the onion and bell pepper, trim and cut the beans, and prepare the bok choy. Mince the tender inner part of the lemongrass and grate the ginger. Cut the fish into even, roughly 1-inch pieces so they cook at about the same pace. Pat the fish dry and keep it refrigerated while you start the broth. If the lemongrass stalk is especially fibrous, peel away its dry outer layers before mincing.
  2. Soften the aromatics. Set a medium Dutch oven or heavy saucepan over medium heat and add the oil. When it shimmers, add the onion, bell pepper, lemongrass, and ginger. Cook for 5 minutes, stirring often, until the onion begins to soften. The vegetables should become fragrant and tender at the edges without browning deeply.
  3. Cook the curry paste. Stir in the red curry paste and cook for 1 minute, stirring constantly so it coats the vegetables and does not stick. This brief step helps release the paste’s aroma into the oil. If the paste starts to catch on the bottom, lower the heat and add a spoonful of broth.
  4. Build the coconut broth. Pour in the coconut milk and broth, then stir in the fish sauce and sugar. Bring the mixture just to a gentle simmer, stirring to combine. Lower the heat and simmer uncovered for 8 minutes. Avoid a hard boil: vigorous bubbling can make the coconut milk look separated and can reduce the broth more quickly than intended.
  5. Cook the vegetables. Add the green beans and bok choy. Keep the broth at a gentle simmer for 5 minutes, stirring once or twice. The beans should be bright and nearly tender, while the bok choy should be softened but still hold its shape. If your beans are particularly thick, give them another minute before adding the fish.
  6. Poach the fish gently. Lower the fish chunks into the broth in a single layer as much as possible. Simmer gently for 6 minutes, turning the pieces once with a wide spoon if needed. Check the thickest piece with a food thermometer: the USDA FSIS safe minimum internal temperature for fish is 145°F (63°C). If a piece has not reached that temperature, continue cooking briefly and check again. Avoid vigorous stirring, which can break the fish into flakes before serving.
  7. Season and finish. Remove the pot from the heat. Stir in the lime juice, salt, and black pepper, then taste the broth. Add a little more fish sauce for savory depth, lime for brightness, or curry paste for more heat if desired. Fold in the cilantro and Thai basil just before serving, and add sliced Thai chile if using. Serve while hot, with lime wedges at the table.

Tips

  • Choose fish that holds together. Cod, haddock, snapper, and other firm white fillets work well in a simmering broth. Very thin fillets can cook too quickly, while delicate fish may fall apart when stirred. Cut the pieces evenly and add them only after the vegetables are nearly tender.
  • Adjust curry paste carefully. Curry pastes differ in heat and saltiness, so begin with 2 tablespoons and taste the broth before adding more. If you are unsure about the heat level, use 1 tablespoon at first and add the rest after the broth simmers. The paste is already seasoned, which is why the recipe starts with a modest amount of added salt.
  • Use galangal or a practical stand-in. Galangal has a sharper, piney, citrus-like flavor and is traditional in many Thai soups, but it may be difficult to find. Fresh ginger is a useful substitute and gives the stew a warmer, simpler flavor. Lemongrass adds a distinct citrus fragrance; if unavailable, use 1 teaspoon finely grated lime zest, knowing the broth will taste less herbal.
  • Keep the simmer gentle. A rolling boil can toughen fish and make the coconut broth look split. Once the fish goes in, move pieces carefully and check doneness rather than relying on color alone. If using frozen fish, thaw it safely in the refrigerator and pat it dry before cutting.

Serving Suggestions

Serve the stew in warm, wide bowls so each portion gets a good mix of fish, vegetables, and broth. Steamed jasmine rice is a natural accompaniment: spoon the broth over the rice or serve it alongside so diners can choose how much to add. Rice noodles also work well, particularly if you want a bowl that is easy to eat with a spoon. For a lighter meal, serve the stew on its own with extra lime wedges and a small plate of sliced cucumber.

Put chopped herbs, chile slices, and lime wedges on the table rather than adding every garnish to the pot. That lets each person adjust freshness, acidity, and heat. A simple side of steamed greens or crisp vegetables can round out the meal without competing with the aromatic coconut broth. If serving rice, cook it separately while the stew simmers; the rice is not included in the stew’s stated cooking time.

Variations

Make it with shrimp. Replace some or all of the fish with peeled, deveined shrimp. Add shrimp near the end and cook until opaque and firm, checking with a food thermometer for 145°F (63°C). Shrimp can cook faster than fish chunks, so avoid adding them at the same time if the pieces are small. A mix of fish and shrimp gives the stew a more varied seafood texture.

Change the vegetables. Snow peas, sliced carrots, mushrooms, spinach, or thinly sliced zucchini can stand in for the beans or bok choy. Add firm vegetables early enough to become tender, and stir tender greens in near the end. Keep the total amount of vegetables close to the recipe quantity so the broth remains plentiful.

Make it less rich. Use light coconut milk, or replace up to half the coconut milk with additional broth. The result will be thinner and less creamy, with the curry and herbs more prominent. Taste again before serving because changing the coconut milk can make the broth seem saltier or sharper.

Use green curry paste. Green curry paste creates a brighter, often hotter flavor, while red curry paste tends to give a rounder, deeper chile taste. Paste brands and recipes vary, so make the swap by volume but start with less if you do not know its heat. If Thai basil is unavailable, regular basil is a practical substitute; it is milder and less anise-like.

Storage and Reheating

Cool leftovers promptly and refrigerate them within 2 hours of cooking in a shallow, covered container. The stew keeps for 3–4 days in the refrigerator. For the best texture, store the fish with the broth rather than separating it, but handle the portions gently because cooked fish flakes easily. The coconut broth may look slightly separated when cold; that is normal and usually smooths out as it warms.

Reheat only the amount you plan to eat. Warm it in a covered saucepan over low to medium-low heat, stirring gently and bringing the leftovers to 165°F (74°C), as recommended for reheated leftovers. Do not let the stew boil hard, since the fish can become dry and break apart. A microwave also works: cover the bowl loosely, heat in short intervals, stir the broth carefully, and check that the center reaches 165°F (74°C).

You can freeze the stew in an airtight freezer-safe container for up to 2 months for best quality, though the fish may become softer after thawing. Leave a little space at the top for expansion. Thaw overnight in the refrigerator and reheat to 165°F (74°C); do not thaw it on the counter. If you expect to freeze portions, slightly undercooking the vegetables is not necessary for safety, but it can help them retain a better texture after reheating.

Frequently Asked Questions

What fish is best for Thai fish stew?

Choose a firm white fish that can be cut into chunks and gently simmered, such as cod, haddock, or snapper. Fresh or safely thawed frozen fillets both work. Avoid very thin pieces, which can overcook before the vegetables are ready. Whatever fish you choose, check the thickest piece with a food thermometer and cook it to 145°F (63°C).

Can I make this stew without fish sauce?

Yes. Use an equal amount of soy sauce or tamari, then taste before adding extra salt. These substitutes provide savory seasoning but lack fish sauce’s distinctive fermented seafood depth, so the finished broth will taste a little different. For a vegetarian version, use vegetable broth and a vegetarian fish-sauce alternative if available, and replace the fish with tofu or additional vegetables.

Is Thai fish stew very spicy?

It can be mild or quite hot depending on the curry paste and any fresh chile you add. Start with 1 tablespoon of paste if you prefer gentle heat, leave out the Thai chile, and add more paste gradually after tasting. Coconut milk softens the sensation of spice, but it does not remove the heat, so increase the paste in small increments.

Can I make the broth ahead of time?

Yes. Cook the broth through the 8-minute simmer, then cool and refrigerate it promptly in a covered container for up to 3–4 days. When ready to eat, bring it back to a gentle simmer, cook the vegetables, and add the fish fresh so it does not become overcooked during storage and reheating. The completed stew can also be made ahead, but the fish will be softer when reheated.

Why does my coconut broth look separated?

Coconut milk can separate when it is boiled hard, and some brands separate slightly after chilling. Keep the stew at a gentle simmer rather than a rolling boil, and stir gently. If it separates, lower the heat and whisk or stir the broth carefully; a slightly uneven appearance does not necessarily mean it has spoiled. Check storage time and smell, and discard it if it has been left out too long or shows signs of spoilage.

Related

More recipes to cook

Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes

Spotted an error? Tell us and we will correct it (corrections policy).