Tom Yum Fish Soup ต้มยำปลา

It’s rare to find a Thai restaurant that doesn’t serve tom yum soup…but it’s even more rare to find one that serves tom yum FISH soup! This is a popular variation of tom yum soup in Thailand, which is a country that eats a lot of fish in general, but for some reason I haven’t seen it served anywhere in North America. That ocean flavour of the fish broth goes incredibly well with the tart lime juice and all the citrusy herbs that are iconic of tom yum. It’s one of the most comforting yet refreshing soups to have any time of year!

clock clock icon cutlery cutlery icon flag flag icon folder folder icon instagram instagram icon pinterest pinterest icon print print icon squares squares icon
tom yum fish soup

Tom Yum Fish Soup ต้มยำปลา

  • Author: Pailin Chongchitnant
  • Yield: 4 Servings


  • 1 lb fish bones
  • 5 cups water
  • 2 big heads shallots (or 4 small ones)
  • 3 cilantro roots or 6 cilantro stems
  • 3 cloves garlic, smashed
  • 2-inch section peeled daikon radish, optional
  • 2 stalks lemongrass, smashed, separate top half and bottom half
  • 8 pc galangal
  • 10 Kaffir lime leaves
  • Dried chilies, to taste, placed under the broiler for 30 seconds to 1 minute to char slightly
  • 3 Tbsp fish sauce
  • 1 tsp sugar
  • 150g oyster or straw mushrooms
  • 2 roma tomatoes
  • 250g fish meat of your choice, cut into big chunks
  • ¼ cup lime juice
  • ½ tsp salt to taste
  • Jasmine rice (or jasmine brown rice!) for serving

Ingredients & Kitchen Tools I Use


(Before you begin, take the soup pot you’re going to use and add 4 cups of water into it. Take a mental note of what 4 cups of water looks like in this pot, i.e. how deep it is, it’ll come in handy later.)

Make fish stock: 

In a pot, add fish bones, water, shallots, cilantro roots, garlic, lemongrass tops, and daikon. Break apart some of the chilies to release the seeds, the more you break the spicier the soup will be, and add to the pot. Simmer on low heat for 45 minutes, skimming off any foam that floats to the top.

Once finished, remove fish bones, cilantro roots, daikon, and lemongrass tops and anything else you don’t want in the final soup. I like to leave the shallots, garlic and chilies in the soup, but you don’t have to. Safety Note: If your fish bones are small or they have fallen apart in the pot, I highly recommend straining out the soup to make sure there are no bones left in the pot! 

At this point you should have roughly 4 cups of fish stock (remember that mental note?). If you let it go a little long and it has reduced a bit too much, you can add water to makeup the shortfall. If you have too much, not to worry, you just may need to add a bit more seasoning, that’s all.

Make the tom yum:

Bring the fish stock to a boil, then add lemongrass bottoms, galangal, torn kaffir lime leaves and simmer for 4-5 minutes. Note: the herbs are not meant to be eaten; they are used to infuse flavour into the soup only, so make sure you tell your guests not to eat them, or remove them altogether. What I like to do is remove some of them to make it easier to eat (less stuff to navigate around) but I leave some in there for garnish.

Add fish sauce, sugar, mushroom, tomato, then the fish meat. Simmer until fish is fully cooked; 1-2 minutes depending on the size of your fish. Once the fish is fully cooked, add lime juice, then taste and more salt as needed.

Top with chopped cilantro and serve! My mom loves to put rice in the soup bowl and eat is as a complete meal in one bowl. Whole grain rice such as jasmine brown rice, red rice, or black rice works particularly well in soups. Enjoy!

Join us on Patreon for bonus content & rewards!