Canh Chua Ca Loc (Sour Catfish Soup)
A tangy, aromatic Vietnamese catfish soup with tamarind, pineapple, and fresh herbs. This elegant yet comforting dish comes together quickly and impresses with layered, bright flavors.
- Total time
- 35 min
- Servings
- 4
- Calories
- 285
- Protein
- 32g
Ingredients
- 1.5 lbs catfish fillets, skin-on
- 3 whole shallots, medium
- 4 whole garlic cloves
- 2 whole fresh lemongrass stalks (white and light green parts only)
- 1 whole fresh galangal (or ginger), 1-inch piece
- 6 cups fish stock (or water)
- 2 tablespoons tamarind paste
- 1.5 cups fresh pineapple chunks (about 1/2 small pineapple)
- 2 tablespoons fish sauce (nuoc mam)
- 1 teaspoon palm sugar (or brown sugar)
- 8 whole fresh okra, trimmed
- 8 whole fresh cherry tomatoes
- 2 whole fresh Thai red chilies (or bird's eye chilies)
- ½ cup fresh basil leaves (Thai or Vietnamese)
- ¼ cup fresh dill fronds
- 1 whole fresh lime
Instructions
- 1
Pat the catfish fillets dry with paper towels and check for any remaining pin bones by running your fingers along the flesh — remove any you find with tweezers or needle-nose pliers. Cut the fillets into 2-inch pieces and set aside on a plate.
- 2
Peel 3 shallots and cut them in half lengthwise, leaving the root end intact so they stay together during cooking. Peel and lightly smash 4 garlic cloves with the side of your knife to release their oils.
- 3
Cut the white and light green parts from 2 lemongrass stalks into 2-inch pieces, then smash each piece with the side of your knife to bruise it and release the aromatic oils. Peel a 1-inch piece of fresh galangal (or ginger) with a small spoon and slice it into thin matchsticks.
- 4
Dissolve 2 tablespoons of tamarind paste in 3 tablespoons of warm water by stirring until no lumps remain — set aside. Cut the pineapple into 1-inch chunks (remove any tough core). Halve the fresh okra lengthwise. Halve the cherry tomatoes. Slice the 2 Thai red chilies at an angle — leave seeds in for more heat, or remove some if you prefer mild spice.
- 5
Pour 6 cups of fish stock (or water) into a 5-quart Dutch oven or large pot and set over medium-high heat. Add the smashed shallots, garlic cloves, lemongrass pieces, and galangal matchsticks. Bring to a boil, then reduce heat to medium and simmer for 8-10 minutes until the broth is fragrant and slightly amber-colored — the aromatics will infuse the entire base.
- 6
Strain the broth through a fine-mesh strainer into a clean pot, pressing gently on the solids to extract all the flavored liquid. Discard the spent aromatics. Return the broth to medium heat and stir in the tamarind water, 2 tablespoons of fish sauce, and 1 teaspoon of palm sugar — taste and adjust seasoning to your preference (the soup should be savory, sour, and slightly sweet in balance).
- 7
Bring the broth back to a gentle simmer, then carefully add the catfish pieces one at a time, sliding them in gently so the broth doesn't stop simmering. Cook for 3-4 minutes — the fish will begin to turn opaque and firm. You'll see small white strands of cooked protein on the surface.
- 8
Add the pineapple chunks and okra halves to the pot. Simmer for 3-4 minutes more, until the okra is tender-crisp and the pineapple has warmed through. The okra should yield slightly when pierced with a knife but still have a bit of snap.
- 9
Gently stir in the halved cherry tomatoes and sliced Thai chilies. Simmer for 1-2 minutes more — the tomatoes should soften slightly but not lose their shape. Taste the broth one final time and adjust with a squeeze of fresh lime juice if needed for brightness.
- 10
Ladle the soup into four deep bowls, distributing the catfish, pineapple, okra, tomatoes, and broth evenly. Tear a generous handful of fresh basil and dill fronds and scatter over each bowl. Serve immediately with lime wedges on the side — guests can squeeze extra juice to taste, and the bright herbs will add a final aromatic lift as the warmth releases their oils.
Tools you’ll need
- tweezers or needle-nose pliers
- paper towels
- knife (8-inch chef's knife recommended)
- cutting board
- 5-quart Dutch oven or large pot
- fine-mesh strainer
- spoon (for stirring and tasting)
- deep bowls (4)
- ladle
Cook smarter
Get matched recipes for what’s in your fridge
CookSnap is a free iOS app that finds real recipes from the ingredients you already have. No more grocery-list aspirations.

