Canh Chua Cá Thì Là (Vietnamese Fish Soup With Tomato and Dill)

Light, delicate, and refreshing, this Northern Vietnamese soup combines fresh fish with a pleasantly tart tomato and dill broth.

Overhead view of soup on a pink, titled background

Serious Eats / Vy Tran

Why It Works

  • Searing freshwater fish before adding it to the broth tempers any earthy taste and keeps its flesh firm, while also imparting more complex flavor to the soup.
  • Cooking the tomatoes in two stages extracts their sweet-savory flavor while also maintaining their tangy freshness.

Canh chua cá thì là, a tomato fish soup fragrant with dill, is one of countless renditions of canh chua (literally translated as “sour soup”), a category of Vietnamese soups generally consisting of fish or seafood simmered in a tart broth. This version is light, delicate, and refreshing, and characterized by the sweetness of the fish mingling with a mild tangy tomato broth and the fragrant, herbaceous note of the dill.

Regardless of the season, there’s always a soup in a Vietnamese meal. Collectively known as “canh,” these soups bring balance to bold and assertive kho (braises and stews), cleanse the palate, and can help moisten the rice for smoother ingestion. Most everyday canh are a humble fare, where vegetables are cooked in water or a quick stock that gets its savory depth from either ground pork, dried shrimp, or mushrooms. Because of Vietnam’s long coastline, and the extensive network of rivers, ponds, and lakes in the Mekong and Red River Deltas, canh chua is also a way to celebrate the abundance of aquatic life. People rely on the acidic broth to temper the earthy or muddy taste that can be found in freshwater fish (caused by geosmin, a chemical naturally produced by algae and microorganisms in freshwater).

Angled view of soup with dipping sauce

Serious Eats / Vy Tran

“One thing that people might miss sometimes when talking about Vietnamese food is the [importance of] sourness,” says Linh Khanh Trinh, a Vietnamese culinary historian pursuing her PhD at the University of Michigan. “There are several ingredients that can go into the sour flavor: vinegar, tamarind, starfruit, tomatoes, and fermented rice.” In the case of homestyle canh, which are less commonly found on restaurant menus, the source of the sourness varies depending on the family and the region. Each of the acidic ingredients can be used on its own as a source of sourness, but I've also seen some used in combination (like tamarind and pineapple).

In Southern Vietnam, where I’m from, a bowl of canh chua often brims with okra, bean sprouts, and taro stems (a distant cousin of actual taro); its broth is decidedly sweet and sour from tamarind and a liberal amount of sugar. In contrast, Trinh, who was born and raised in Hanoi, grew up with canh chua cá, a simpler rendition with fewer ingredients, its mellow tang derived from tomatoes, mẻ (fermented rice), or fruits like sấu (also known as the Indochina dragonplum). Elsewhere in central Vietnam, the soup’s tartness and mild astringency might come from pickled mustard greens, pineapple, or unripened bananas. There’s also a bit of heat from the addition of chiles.

While canh chua cá thì là is generally made with freshwater fish, this recipe is flexible and can accommodate different varieties (fatty and oily fish like salmon will have a much stronger flavor than snapper or sea bass). A whole fish cut into steaks is commonly used, though Trinh’s family exclusively makes their soup with a freshwater fish head because of its sweetness and richness.

Overhead view of fish cut into steaks and seasoned

Serious Eats / Vy Tran

I start the soup by giving the fish a quick sear to lessen any muddy flavor, a technique I learned from both Trinh and Andrea Nguyen’s Into the Vietnamese Kitchen. From my testing, I found that searing carp and tilapia significantly removed their earthy flavor, but for seabass and salmon the effect was negligible (they only had some mild brininess to begin with). This step also gives the fish a sweet toasty note and forms a crust on the surface that can help prevent breakage in the soup, so don’t skip it if you’re not pressed for time.

For the tomatoes, I dice a third and sauté them right after the shallots to concentrate their flavor for the soup base, and cut the remaining tomatoes into wedges to add near the end of the cooking, which helps to maintain their brightness. Depending on how tart your tomatoes are, you may want to add a splash of rice vinegar or a squeeze of lime juice to adjust the acidity. The broth won’t have a pronounced sourness, but should have a mild tang with some subtle sweetness.  

To serve, simply ladle the broth into a large serving bowl and transfer the fish to a sharing plate so diners can easily pick the flesh with their chopsticks. For a full Vietnamese home-style meal experience, combine fish sauce and sliced bird’s-eye chiles to make a dipping sauce for the fish pieces, which can also be used to season the soup in your own bowl if you find it needs more kick. 

Recipe Facts

Prep: 5 mins
Cook: 30 mins
Total: 35 mins
Serves: 4 to 6 Servings

Rate & Comment


For the Soup:

  • One whole, head-on 1-pound (450g) sea bass, scaled, gutted, and body cut into 2-inch-thick steaks (see note)

  • Kosher salt and freshly ground black pepper

  • 4 teaspoons (20ml) neutral oil, divided, plus more if needed

  • 1 large shallot (50g), thinly sliced

  • 1 pound (450g) firm but ripe tomatoes, 1/3 diced and 2/3 cut into 1-inch-thick wedges

  • 4 teaspoons (20ml) fish sauce, preferably Vietnamese (see note)

  • 1/2 teaspoon (2.5ml) rice vinegar or fresh lime juice, plus more to taste (optional)

  • 1 bunch dill (1 ounce; 30g), fronds and tender stems only, cut into 1-inch segments

For the Dipping Sauce and to Serve:

  • 1 tablespoon (15ml) fish sauce, preferably Vietnamese

  • 1 bird’s-eye chile, thinly sliced

  • Steamed jasmine rice, to serve 


  1. For the Soup: Lightly season fish with salt and pepper. In a 10-inch nonstick skillet, heat 2 teaspoons oil over medium-high heat until shimmering, then, working in batches if necessary to avoid crowding the pan, sear fish until lightly golden on each side but not cooked through, 2 to 3 minutes per side (add more oil if skillet runs dry). Transfer partially cooked fish to a plate and set aside.

    Overhead view of fish in pan

    Serious Eats / Vy Tran

  2. In a 3-quart saucepan, heat remaining 2 teaspoons oil over medium-high heat until shimmering. Add shallot and cook, stirring occasionally, until lightly golden, 3 to 4 minutes.

    Overhead view of shallots in pan

    Serious Eats / Vy Tran

  3. Add diced tomato and cook until softened and its liquid evaporates, 3 to 4 minutes. Add 4 cups water and bring to a boil. Add fish and cook at a gentle simmer, adjusting heat as necessary to maintain simmer, until fish is just cooked through, about 5 minutes. Transfer fish to a serving plate and keep warm.

    Two Image Collage of overhead view of tomatoes and onions being cooked down and fish being added to soup base

    Serious Eats / Vy Tran

  4. Add wedged tomatoes and fish sauce to the broth, increase heat to medium high, and return to a boil. Cook until tomatoes are heated through. Season with salt to taste and add rice vinegar or lime juice, if needed (the broth should be mildly sour, with some subtle sweetness).

    Overhead view of whole tomatoes being added to fish broth

    Serious Eats / Vy Tran

  5. For the Dipping Sauce and to Serve: In a small bowl, combine fish sauce and chile and set aside.

    Dipping sauce in a shallow bowl

    Serious Eats / Vy Tran

  6. To serve, ladle broth into a large serving bowl, then garnish with dill. Serve hot with fish, rice, and dipping sauce.

    Side angle view of finished soup with garnishes and rice

    Serious Eats / Vy Tran

Special Equipment

10-inch nonstick skillet, 3-quart saucepan


This recipe is flexible and can accommodate different varieties of fish (carp, tilapia, snapper, salmon, etc.).

I find Thai fish sauce saltier and more pungent than Vietnamese, which can affect the saltiness of the soup. However, you don't have to specifically source Vietnamese fish sauce just to make this soup, just be aware of the saltiness level if you use Thai fish sauce and adjust accordingly.

Nutrition Facts (per serving)
108 Calories
5g Fat
5g Carbs
12g Protein
Show Full Nutrition Label Hide Full Nutrition Label
Nutrition Facts
Servings: 4 to 6
Amount per serving
Calories 108
% Daily Value*
Total Fat 5g 6%
Saturated Fat 1g 3%
Cholesterol 23mg 8%
Sodium 656mg 29%
Total Carbohydrate 5g 2%
Dietary Fiber 1g 5%
Total Sugars 3g
Protein 12g
Vitamin C 16mg 80%
Calcium 32mg 2%
Iron 1mg 5%
Potassium 414mg 9%
*The % Daily Value (DV) tells you how much a nutrient in a food serving contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
(Nutrition information is calculated using an ingredient database and should be considered an estimate.)