This velvety soup combines tender white fish pieces swimming in a rich coconut milk base brightened with fresh lime juice and zest. The aromatic foundation starts with sautéed onions, garlic, ginger, and colorful vegetables including red bell pepper, carrots, and celery. A gentle simmer in fish stock allows flavors to meld before the fish is added and cooked until perfectly opaque. Finished with a splash of fish sauce, soy sauce, and a squeeze of lime, each bowl offers a harmonious balance of creamy, tangy, and savory elements that evoke tropical Southeast Asian cuisine.
The first time I made this soup was on a rainy Tuesday when I needed something that tasted like sunshine. The lime zest hit my nose before I even finished seasoning, and suddenly my kitchen felt warmer, brighter, like a tiny vacation from the gray weather outside.
Last month my friend who swears she hates fish soup took one spoonful and went quiet for a full minute. She actually asked for seconds, then messaged me the next day for the recipe, saying she dreamed about the broth.
Ingredients
- 500 g white fish fillets: I usually grab cod or halibut because they hold their shape beautifully in hot broth, but tilapia works perfectly if you are watching your budget
- 1 medium onion: Finely chopped so it melts into the background rather than creating chunky bits in every spoonful
- 3 garlic cloves: Minced fresh because jarred garlic never quite gives you that punch you want in a quick soup
- 1 thumb-sized piece fresh ginger: Grated it directly into the pot for maximum fragrance and no stringy bits
- 1 red bell pepper: Sliced into thin strips because they look gorgeous floating in the bowl and add sweetness
- 2 small carrots: Thinly sliced so they cook through completely without becoming mushy
- 2 stalks celery: Sliced at an angle for a bit of elegance and better texture distribution
- 2 green onions: Sliced right before serving because their fresh crunch matters here
- 400 ml coconut milk: Fullfat is nonnegotiable for that luxurious mouthfeel that makes this soup feel special
- 750 ml fish or vegetable stock: Homemade stock elevates this, but a good quality storebought one absolutely works
- Juice and zest of 2 limes: The zest holds all those aromatic oils while the juice provides the bright acid the soup needs
- 1 tablespoon fish sauce: Do not skip it even if you are nervous because it provides that deep savory backbone you cannot get any other way
- 1 tablespoon soy sauce: Use glutenfree if you need to but do not omit it completely
- 1 teaspoon sugar: Just enough to balance the acid and heat without making the soup taste sweet
- 1 teaspoon salt: Start here and adjust because the fish sauce already brings saltiness
- ½ teaspoon black pepper: Freshly ground makes a noticeable difference here
- 1 small red chili: Optional but that little heat thread running through the soup ties everything together
- Fresh cilantro leaves: Chopped and sprinkled on top because the herbaceous pop against the coconut is magic
Instructions
- Build your aromatic base:
- Heat your largest pot over medium heat with a splash of oil and sauté the onion until it turns translucent and fragrant, about 3 minutes.
- Wake up the vegetables:
- Add the garlic, ginger, celery, carrots, and bell pepper, stirring occasionally for 4 to 5 minutes until they start to soften and release their aromas.
- Create the broth:
- Pour in the fish stock and bring everything to a gentle simmer before adding the coconut milk and seasonings.
- Add the star:
- Gently slide in the fish pieces and simmer for 7 to 8 minutes until the fish turns opaque and flakes easily.
- Finish bright:
- Stir in the lime juice and zest, taste the soup, and adjust the seasoning before ladling into bowls and topping with green onions and cilantro.
This soup has become my go-to when friends are having a rough week. Something about the combination of hot broth, creamy coconut, and that hit of lime just feels like a hug in a bowl.
Making It Your Own
I have played around with this base more times than I can count. Sometimes I toss in a bruised stalk of lemongrass with the vegetables and fish it out before serving, which adds this incredible floral citrus note. Other times I swap the fish for shrimp or cubes of firm tofu, and both work beautifully.
What To Serve Alongside
On its own this soup feels light and elegant, but when I am feeding hungry people I always put a pot of jasmine rice on the table. There is something perfect about spooning that coconut broth over fluffy grains, or sometimes I cook up some rice noodles and let everyone add their own.
Timing Your Soup Right
The tricky part about this soup is getting everything to finish at the same time without overcooking the fish. I prep all my vegetables before I turn on the stove, and I cut my fish into even, bitesized pieces so they cook uniformly. Once the fish goes in, I set a timer and stay right there.
- Squeeze your lime juice into a small bowl before you start cooking so it is ready to add
- Have your garnishes chopped and sitting on a plate near the stove
- Taste the broth before adding the fish because it is harder to adjust seasoning afterward
Serve this soup in deep bowls with plenty of napkins nearby. Some meals are meant to be savored slowly, and this is definitely one of them.
Questions & Answers
- → What type of fish works best?
-
White fish fillets like cod, halibut, or tilapia are ideal because they hold their shape during simmering and have a mild flavor that complements the coconut and lime. The fish should be cut into bite-sized pieces for even cooking.
- → Can I make this soup dairy-free?
-
Yes, this soup is naturally dairy-free since it uses coconut milk instead of cream. Always use full-fat coconut milk for the richest texture and flavor. Check that your soy sauce is gluten-free if needed.
- → How spicy is this soup?
-
The base soup is mild with just a subtle warmth from ginger and black pepper. The fresh red chili is optional—add it sliced for medium heat or leave it out completely. You can easily adjust the spice level to your preference.
- → What can I serve with this soup?
-
Steamed jasmine rice or rice noodles make excellent accompaniments for a heartier meal. The soup also stands alone beautifully as a light main course. A side of crusty bread works well for soaking up the broth.
- → Can I prepare this soup in advance?
-
You can prepare the vegetable base and broth up to a day ahead, but add the fish just before serving. Reheat the soup gently and simmer the fish for 7–8 minutes until cooked through. Stir in the fresh lime just before serving.
- → What substitutions can I make?
-
Shrimp or tofu work well instead of fish. Adding lemongrass during simmering infuses extra aromatic flavor. For a thicker soup, use slightly less stock. Feel free to add other vegetables like snap peas or bok choy.