This Tom Yum Recipe is a takeout-worthy Thai soup made in one pot in under 30 minutes. It’s perfect for spice lovers who are craving something cozy and comforting without feeling heavy. I love to make it with shrimp, but it’s easy to customize with your favorite protein.

I’m the self-proclaimed world’s biggest soup fan and will often make the time to get in the kitchen to play with soup recipes from around the world. From Greek Avgolemono Soup to Carne en su Jugo, there’s always something new to try.
Tom Yum Soup
Tom yum is Thailand’s national soup, and for good reason. This iconic Thai dish is celebrated for its bright, spicy, and aromatic broth, traditionally made with simple ingredients like shrimp, wild mushrooms, chile peppers, and herbs. I make it every time I want something satisfying and comfortably spicy, though you can make it as mild or as fiery as you like.
My recipe is made with shrimp (Tom Yum Goong), but you can easily swap it for the protein of your choice. Chicken, tofu, or other seafood all work. The layers of aromatic flavors in the broth are the true stars of this soup.
There are two types of tom yum: clear and creamy. This creamy version uses evaporated milk, adding a richness I’m completely obsessed with. The evaporated milk doesn’t add much flavor (that’s why I combined it with Thai chili paste), but it just makes the soup that much more satisfying. When I was shooting the video for this recipe, my videographer and I devoured it over 2 days.
Ingredients and Substitutions

- Oil – Any neutral-flavored oil will work.
- Mushrooms – I used a mix of oyster, enoki, and shiitake mushrooms.
- Stock – I prefer a blend of shrimp and chicken stock, but you can use either.
- Aromatics – Sautéed shallots, lemongrass, ginger, cilantro, and lime leaves bring the bright, citrusy notes that make authentic tom yum famous. If you need a substitute for lime leaves, use thin strips of lime peels instead.
- Fish Sauce – I only used a couple of tablespoons to build on the salty-savory flavors. You can substitute soy sauce here, but nothing truly replaces good fish sauce.
- Chile – I ground a serrano chile with a mortar and pestle to distribute the heat evenly. Technically, Thai bird chiles are more authentic, but I prefer the serrano’s milder heat.
- Chili Paste – Thai chili paste is a little more complex than my usual favorite, sambal oelek.
- Evaporated Milk – It’s what makes this a creamy tom yum soup recipe.
- Shrimp – I prefer 16/20 size because they stay plump and juicy. If you’re not a fan of shrimp, make this with any of the substitutions below.
- Limes – Freshly squeezed lime juice adds a great tangy finish.
- Cilantro – I stirred in a big bunch of fresh cilantro leaves at the end.
- Seasonings – I rounded out the flavors with salt and pepper.
Shrimp Substitutions
My family isn’t big on shrimp, which is why I’ve tested this soup with lots of other proteins:
- Chicken (Tom Yum Gai) – I’ll sear thinly sliced chicken breasts or thighs before stirring them into the soup.
- Tofu – Sear cubes of extra-firm tofu in a hot oiled pan until golden on all sides, then stir them into the soup.
- Seafood – Swap the shrimp for thinly sliced white fish, scallops, squid rings, mussels, or clams.
How to Make Tom Yum with Shrimp
Sauté the mushrooms: I start by sautéing the mushrooms in a large pot until they’re deeply browned. This step isn’t traditional, but browning builds layers of umami you simply can’t get from boiling.

Brown the shallots: Next, I add the sliced shallots and continue sautéing. Again, not a traditional step, but I’m firmly on Team Roasted Vegetables (I’m not a fan of mushy boiled veggies).

Build the broth: I deglaze the pot with shrimp stock, scraping up all those tasty golden bits stuck to the bottom. Then, I add the chicken stock, lemongrass, ginger, cilantro stems, lime leaves, fish sauce, Thai chili paste, and a pinch of salt and pepper.

Poach the shrimp: I stir the soup and heat it to a gentle simmer. Next, I lower the heat, add the shrimp, and simmer until they turn pink.

Finish the soup: Once the shrimp are cooked, I stir in the evaporated milk, ground serrano chile, fresh lime juice, and cilantro leaves. I adjust the seasonings to taste before ladling the soup into bowls and serving.

Chef Tip + Notes
Making great tom yum goong is all about hitting that perfect balance of slightly spicy, tangy, and salty flavors. The way to do this? Taste and adjust as you go. While the soup is simmering, I’m usually tasting it and adding more evaporated milk or stock to tone down the heat, fish sauce if it’s too sour, or lime juice or a splash of water to balance the saltiness.
- Bring out the flavor: I like my tom yum super aromatic, which is why I always smash the lemongrass to release its oils and fold the lime leaves in half and tear them along the center vein to unlock their full aroma.
- Perfect shrimp: When poaching shrimp in the soup, I keep the heat low and remove the soup from the heat as soon as they turn opaque and curl into a loose “C” shape.
- Too spicy? Reduce the spice by removing the seeds and membranes from the serrano before grinding it.
- If you like heat, grind the whole serrano pepper, seeds and all. You can also garnish your bowl of soup with a drizzle of sriracha, chili garlic sauce, or chili crisp.
- Clear tom yum: Omit the evaporated milk and Thai chili paste to make classic tom yum nam sai (the clearer, brothier version).
Serving Suggestions
I almost always enjoy this Thai shrimp soup alongside steamed jasmine rice and a Thai-style omelet (Kai Jeow). Nothing fancy, just everyday Thai favorites.
If you want to turn this into a full Thai-inspired feast, I recommend pairing the soup with Thai drunken noodles (Pad Dee Mao) and a papaya salad (Som Tum) for a lively mix of textures and flavors. A plate of shrimp spring rolls or chicken satay with peanut sauce also fits right in.
Make-Ahead and Storage
Make-ahead: If I want to get a head start on this soup, I’ll make the broth and refrigerate it for 3 days or freeze it for 3 months before serving. This makes it quick and easy to reheat and combine with freshly cooked shrimp.
How to Store: Leftover tom yum shrimp soup will keep for up to 2 days in the fridge. I usually store the broth and shrimp separately if I plan to save the leftovers.
How to Reheat: I prefer to warm up tom yum on the stovetop until it’s just heated through. Add a squeeze of lime and a splash of fish sauce right before serving.
More Asian-Inspired Recipes
Tom Yum Recipe (Spicy Creamy Thai Shrimp Soup)

Ingredients
- 6 tablespoons neutral-flavored cooking oil
- 4 ounces oyster mushrooms, torn by hand
- 4 ounces enoki mushrooms, stem cluster removed
- 4 ounces stemmed shiitake mushrooms, julienned
- 10 small shallots, peeled
- 5 cups shrimp stock
- 3 cups chicken stock
- 2 pieces lemon grass, smashed and cut into 2-inch-long pieces
- 2 inch piece of ginger, peeled, thinly sliced
- 20 cilantro stems, cut into 1/2” inch pieces
- 2 lime leaves
- 1 tablespoon fish sauce
- 1 serrano chile, ground using a mortar and pestle
- 2 tablespoons Thai chilli paste
- 12 ounces evaporated milk
- 1 ½ pounds 16/20 shrimp, peeled and deveined
- Juice of 2 limes, about 3 tablespoons of juice
- ¼ cup minced fresh cilantro leaves
- salt and pepper to taste
Instructions
- In a large pot, add 4 tablespoons of cooking oil and heat over medium-high heat until it begins to smoke.
- Next, add the mushrooms, season them lightly with salt, and sauté for 3 to 4 minutes, or until they begin to brown.
- Then add in the shallots and saute for a further 3 to 4 minutes to also brown them.
- Then, deglaze with the shrimp stock and add the chicken stock, lemongrass, ginger, cilantro stems, lime leaves, fish sauce, Thai chili paste, salt, and pepper. Stir to combine.
- Then, over low to medium heat, add the shrimp and cook just until they’re cooked through. They should be in a loose C shape.
- Once they’re cooked, finish with the evaporated milk, ground serrano chile, lime juice, and cilantro leaves. Adjust the heat level by adding more chiles.
- Serve with rice and omelette on the side.




Tom Yum Recipe (Spicy Creamy Thai Shrimp Soup)