Go Back
Thai Fish Soup Recipe

Thai Fish Soup (Tom Yum Pla)

Steven
This 30-minute Thai fish soup delivers restaurant-quality flavor with a fragrant broth built on lemongrass, galangal, and kaffir lime leaves. Tender white fish simmers in a creamy coconut milk base that's bright, savory, and gently spicy.
Prep Time 15 minutes
Cook Time 15 minutes
Total Time 30 minutes
Course Soup
Cuisine Thai
Servings 4 bowls
Calories 320 kcal

Equipment

  • Large soup pot or Dutch oven - at least 4-quart capacity
  • Sharp chef's knife
  • Cutting board
  • Wooden spoon or silicone spatula
  • Citrus juicer
  • Ladle
  • Fine-mesh strainer - optional, for clearer broth
  • Measuring cups and spoons

Ingredients
  

  • 1.5 lbs firm white fish fillets - 680g, tilapia, cod, snapper, or halibut, cut into 2-inch chunks
  • 4 cups chicken or seafood stock - 950ml
  • 1 can coconut milk - 13.5 oz / 400ml, full-fat recommended for creamier broth
  • 2 stalks lemongrass - bruised and cut into 2-inch pieces
  • 1 inch galangal root - 2.5cm piece, sliced into coins (or substitute fresh ginger)
  • 6 kaffir lime leaves - torn in half
  • 3 shallots - halved
  • 4 cloves garlic - smashed
  • 3-5 Thai bird's eye chilies - lightly smashed, adjust to your heat preference
  • 1 cup mushrooms - 70g, oyster or straw mushrooms work great, or button mushrooms, sliced
  • 1 cup cherry tomatoes - 150g, halved
  • 3 tablespoons fish sauce - or to taste
  • 3 tablespoons fresh lime juice - about 2-3 limes, plus extra wedges for serving
  • 1 teaspoon sugar - palm sugar or white sugar
  • 2 tablespoons Nam Prik Pao - Thai roasted chili paste, optional but highly recommended
  • fresh cilantro - for garnish
  • 2 green onions - sliced, for garnish
  • steamed jasmine rice - for serving, optional
  • rice noodles - for serving, optional
  • Thai basil leaves - for garnish, optional
  • fresh bean sprouts - for serving, optional

Instructions
 

  • Prep aromatics: Trim lemongrass, bruise, and cut into 2-inch pieces. Slice galangal into coins, tear kaffir lime leaves, halve shallots, smash garlic, and lightly smash chilies. Cut fish into 2-inch chunks and pat dry.
  • Pour stock into a large pot. Add lemongrass, galangal, kaffir lime leaves, shallots, garlic, and chilies. Bring to a gentle boil, then reduce to a simmer and infuse for 15 minutes.
  • Stir in coconut milk, fish sauce, lime juice, sugar, and Nam Prik Pao if using. Bring back to a gentle simmer. Taste and adjust seasoning.
  • Add mushrooms and simmer for 3-4 minutes until tender. Add cherry tomatoes and simmer for 2 more minutes.
  • Gently slide fish pieces into the broth in a single layer. Reduce heat to medium-low and cook for 3-5 minutes until fish is opaque and flakes easily.
  • Taste one final time and adjust seasoning. Ladle into bowls and garnish with cilantro, green onions, and extra lime wedges. Serve immediately over rice or noodles if desired.

Notes

  • Bruise, don't chop: Bruising lemongrass, galangal, and kaffir lime leaves releases their essential oils without making the broth cloudy or leaving fibrous pieces that are unpleasant to bite into.
  • Use full-fat coconut milk: Low-fat coconut milk produces a thinner, less rich broth. The fat in full-fat coconut milk carries the aromatic flavors and gives the soup its beautiful body.
  • Don't overcook the fish: Fish needs only 3-5 minutes in simmering broth. Set a timer and check it early. Overcooked fish becomes tough and dry.
  • Season in layers: Add fish sauce, lime juice, and sugar before the fish goes in, taste the broth, and adjust. Then taste again after the fish cooks and do a final adjustment.
  • Add lime juice off the heat: Lime juice can turn bitter if boiled for too long. For maximum brightness, stir in a last squeeze of fresh lime juice just before serving with the heat off.
  • Use quality fish sauce: A good Thai fish sauce (Tiparos, Megachef, or Tra Chang) gives the soup its savory depth without harsh saltiness.
  • Pat the fish dry: Removing excess moisture from the fish before adding it to the broth helps it stay intact rather than becoming waterlogged and falling apart.
  • Storage: Store leftover soup in an airtight container in the refrigerator for up to 2 days. Freeze the broth separately without the fish for up to 1 month.
  • No coconut milk version: Skip the coconut milk entirely and increase the stock to 5 cups (1.2 liters) for a lighter, more intensely sour broth closer to classic Tom Yum Pla.
  • Make ahead: The broth can be made up to 2 days in advance. When ready to serve, bring the broth back to a gentle simmer, add the mushrooms, tomatoes, and fish, and finish the recipe from Step 4.
Keyword 30 minute soup, coconut fish soup, spicy fish soup, thai fish soup, tom yum pla