A fragrant coconut broth laden with the ocean's finest: wild shrimp, firm Pacific cod, and briny mussels swimming alongside lemongrass, galangal, and torn kaffir lime leaves. This is where Thai tradition meets our coastal waters.
Soups & Stews
Thai
Weeknight
Dinner Party
25 min
Active Time
20 min cook•45 min total
Yield6 servings
The Pacific Northwest has always been a crossroads. Native peoples harvested these waters for millennia before Scandinavian fishermen brought their smoking techniques, before Asian immigrants introduced their aromatics and fermented sauces to the docks of Seattle and Portland. This soup honors all of them.
Tom kha, the Thai coconut soup, traditionally features chicken. But stand at Pike Place Market on any given morning and tell me chicken makes sense when Dungeness crab sits piled in ice, when spot prawns still twitch, when mussels gleam blue-black and promise the sea. The aromatics of Southeast Asia meet our abundance, and something remarkable happens.
I've made this soup a hundred times, adjusting the balance between the four pillars of Thai cooking: salty, sour, sweet, and hot. The fish sauce provides depth without fishiness. The lime juice brightens. Palm sugar rounds the edges. And the chilies, well, you control those. Start with less than you think. You can always add heat. You cannot subtract it.
What matters most is your seafood. Know your fishmonger. Ask questions. Wild-caught Pacific cod from sustainable fisheries. Mussels harvested from clean, cold waters. Shrimp with heads if you can find them, because those heads contain flavor you cannot replicate. This is not a soup that forgives inferior ingredients.
The technique, the tradition, and the story behind every dish.
bottom 4 inches, bruised and cut into 2-inch pieces
fresh galangal
Quantity
3-inch piece
sliced into thin coins
kaffir lime leaves
Quantity
6
torn
Thai bird chilies
Quantity
4
lightly smashed
Pacific cod or halibut
Quantity
1 lb
cut into 2-inch pieces
wild shrimp (16-20 count)
Quantity
1 lb
peeled and deveined
fresh mussels
Quantity
1 lb
scrubbed and debearded
oyster mushrooms
Quantity
8 oz
torn into bite-sized pieces
fish sauce
Quantity
3 tablespoons, plus more to taste
palm sugar or light brown sugar
Quantity
2 tablespoons
fresh lime juice
Quantity
1/4 cup (about 3 limes)
cherry tomatoes
Quantity
1 cup
halved
fresh cilantro leaves
Quantity
1/2 cup
fresh Thai basil leaves
Quantity
1/4 cup
green onions
Quantity
2
thinly sliced
sambal oelek or chili oil (optional)
Quantity
for serving
Ingredient
Quantity
full-fat coconut milk
2 cans (13.5 oz each)
seafood stock or fish fumet
2 cups
lemongrass stalksbottom 4 inches, bruised and cut into 2-inch pieces
3
fresh galangalsliced into thin coins
3-inch piece
kaffir lime leavestorn
6
Thai bird chilieslightly smashed
4
Pacific cod or halibutcut into 2-inch pieces
1 lb
wild shrimp (16-20 count)peeled and deveined
1 lb
fresh musselsscrubbed and debearded
1 lb
oyster mushroomstorn into bite-sized pieces
8 oz
fish sauce
3 tablespoons, plus more to taste
palm sugar or light brown sugar
2 tablespoons
fresh lime juice
1/4 cup (about 3 limes)
cherry tomatoeshalved
1 cup
fresh cilantro leaves
1/2 cup
fresh Thai basil leaves
1/4 cup
green onionsthinly sliced
2
sambal oelek or chili oil (optional)
for serving
Equipment Needed
•6 to 8-quart Dutch oven or heavy-bottomed pot with lid
•Fine mesh strainer (if making homemade stock)
•Mussel debearding brush or stiff kitchen brush
Instructions
1
Build the aromatic base
Pour the coconut milk and seafood stock into a large Dutch oven or heavy-bottomed pot. Add the lemongrass pieces, galangal coins, torn kaffir lime leaves, and smashed chilies. Bring to a gentle simmer over medium heat, then reduce to low and let the aromatics steep for 10 minutes. Your kitchen will fill with a perfume that's part tropical, part medicinal, entirely intoxicating. Don't rush this. The broth is learning the flavors.
If you can't find fresh galangal, don't substitute dried. Use fresh ginger instead, understanding that you'll lose some of galangal's piney, peppery character.
2
Season the broth
Stir in the fish sauce and palm sugar. Taste carefully. The broth should be salty and slightly sweet, with the coconut providing richness. Remember: you'll add lime juice later, which will brighten everything. The soup tastes different now than it will at the table. Trust the process.
3
Cook the mushrooms
Add the torn oyster mushrooms to the simmering broth. Let them cook for 3 minutes until they soften and absorb the coconut milk. Oyster mushrooms have a delicate, almost seafood-like quality that makes them perfect here. They also provide body for anyone who wants to stretch the soup further.
4
Add the cod
Nestle the cod pieces into the broth, submerging them gently. Cod takes longest to cook and flakes beautifully when done. Let it simmer undisturbed for 3 minutes. Resist the urge to stir, which would break the fish apart before it sets.
Cut your fish into generous pieces. They shrink during cooking, and small pieces disappear into the broth. Two-inch chunks become perfect single bites.
5
Add shrimp and mussels
Add the shrimp, distributing them evenly in the pot. Arrange the mussels hinge-side down around the edges where they can open freely. Cover the pot and cook for 4 to 5 minutes. The shrimp will curl and turn pink. The mussels will gape open, releasing their liquor into the broth. Discard any mussels that refuse to open after 6 minutes.
6
Finish with brightness
Remove the pot from heat. Stir in the lime juice and halved cherry tomatoes. The acid transforms the soup, cutting through the richness and making everything vibrant. Taste again. Adjust with more fish sauce for salt, more lime for brightness, more sugar if it tastes too sharp. The balance should make your mouth water.
7
Serve immediately
Ladle the soup into deep bowls, ensuring each serving gets a generous share of all three seafoods and several mussels. Scatter cilantro leaves, Thai basil, and sliced green onions over the top. The herbs should be abundant, not decorative. Serve with sambal oelek on the side for those who want more heat. Eat this with a large spoon and good bread for soaking up what remains.
Warn your guests about the lemongrass pieces, galangal coins, and lime leaves. They're not meant to be eaten, but they look like they could be. No one wants a mouthful of woody lemongrass.
Chef Tips
•Sustainable seafood matters. Look for wild-caught Pacific cod certified by the Marine Stewardship Council. Farmed mussels are actually an environmentally responsible choice since they filter water and require no feed. Wild American shrimp from the Gulf or Pacific beat imported farmed shrimp every time.
•The aromatics can be steeped in the coconut milk up to 4 hours ahead and held at room temperature. This deepens the flavor considerably. Reheat before adding seafood.
•If you're serving this at a dinner party, have all your seafood prepped and ready on a sheet pan in the refrigerator. The final cooking takes only 8 minutes once your broth is hot. You can be present with your guests instead of trapped in the kitchen.
•Save shrimp shells and heads in a freezer bag. When you have a pound, simmer them with aromatics to make your own seafood stock. It's superior to anything in a carton and costs nothing.
•This soup pairs beautifully with an off-dry Riesling or a crisp Grüner Veltliner. The slight sweetness in the wine mirrors the palm sugar while the acidity matches the lime.
Advance Preparation
•The aromatic broth (coconut milk, stock, and aromatics) can be prepared up to one day ahead and refrigerated. The flavors will intensify overnight.
•All seafood can be cleaned, prepped, and refrigerated up to 8 hours before cooking. Keep each type separate and well-chilled.
•Do not add the seafood until you're ready to serve. This soup does not hold or reheat well once the shellfish is cooked. Overcooked shrimp are rubber. Reheated mussels are tough.
Frequently Asked Questions
Nutrition Information
1 serving (about 370g)
Calories
680 calories
Total Fat
45 g
Saturated Fat
31 g
Trans Fat
0 g
Unsaturated Fat
12 g
Cholesterol
183 mg
Sodium
465 mg
Total Carbohydrates
9.5 g
Dietary Fiber
1.5 g
Sugars
5 g
Protein
43 g
Where cooking meets culture.
Culinary guides, cultural storytelling, and the editorial depth that makes cooking meaningful.