Cambodian sweet and sour soup, often called samlor machu, is a clear Khmer-style soup with a lively tart-and-sweet broth, tender fish, pineapple, tomatoes, and fresh herbs. Recipes vary by household and region, but tamarind, fish sauce, and a generous finish of herbs give this version its characteristic balance and make it satisfying with a bowl of rice.
Ingredients
- 8 cups (1.9 L) water, or unsalted chicken stock for a fuller broth
- 1 1/2 lb (680 g) firm white fish fillets, such as catfish, cod, or basa, cut into 1 1/2-inch pieces
- 2 tablespoons (30 ml) unsweetened tamarind concentrate
- 1 cup (165 g) fresh pineapple chunks, cut into bite-size pieces
- 2 medium tomatoes (about 10 1/2 oz / 300 g), cut into wedges
- 6 oz (170 g) okra, trimmed and cut into 1-inch pieces
- 2 garlic cloves (about 6 g), lightly crushed
- 1 lemongrass stalk (about 1 oz / 30 g), tough outer layers removed and stalk bruised
- 1 tablespoon (15 ml) fish sauce, plus more to taste
- 2 teaspoons (8 g) granulated sugar, plus more to taste
- 1/2 teaspoon (3 g) fine salt, plus more as needed
- 1/4 teaspoon (0.5 g) ground black pepper
- 1 cup (100 g) bean sprouts, rinsed and drained
- 1 cup (20 g) chopped rice paddy herb, also sold as ma om, with tender stems
- 1/2 cup (15 g) chopped cilantro leaves and tender stems
- 2 scallions (about 1 oz / 30 g), thinly sliced
- 1 small Thai chili (about 5 g), thinly sliced, optional
- 1 lime (about 2 oz / 60 g), cut into wedges for serving, optional
Instructions
- Prepare the ingredients. Cut the fish into even pieces so they cook at roughly the same rate. Rinse and drain the bean sprouts, chop the herbs and scallions, and prepare the vegetables. Bruise the lemongrass by pressing it firmly with the flat side of a knife; this helps release its aroma into the broth. Keep the fish refrigerated while you make the broth.
- Start the broth. Pour the water or stock into a large pot and add the crushed garlic, bruised lemongrass, tamarind concentrate, fish sauce, sugar, salt, and black pepper. Bring to a boil over medium-high heat, which should take about 5 minutes, then lower the heat to maintain a gentle simmer. Stir until the tamarind and sugar are evenly dispersed.
- Simmer the pineapple. Add the pineapple and simmer for 4 minutes. Taste a spoonful of broth before adding the more delicate ingredients. It should taste clearly sour, gently sweet, and savory rather than strongly salty. Stir in a little more tamarind if it needs tang, or a pinch of sugar if the sourness is sharp. Keep in mind that the tomatoes will add some sweetness as they cook.
- Add the tomatoes and okra. Add the tomato wedges and okra, then simmer gently for about 4 minutes, until the tomatoes begin to soften and the okra is nearly tender. Avoid a hard boil: a rolling boil can break up the tomatoes and make the broth cloudy. If you prefer crisper okra, add it a minute or two later.
- Cook the fish carefully. Slide the fish pieces into the simmering soup and cook for about 6 minutes, turning them once only if needed. The fish is ready when it is opaque and flakes easily; check the center of a thick piece with a food thermometer. USDA FSIS lists 145°F (63°C) as the safe minimum internal temperature for fish. Cooking time depends on the thickness and type of fish, so use the temperature rather than the clock alone as your final check.
- Finish and adjust. Turn off the heat and stir in the bean sprouts, rice paddy herb, cilantro, and scallions. The residual heat will soften the sprouts while keeping the herbs fresh and fragrant. Taste the broth once more and adjust with fish sauce for savoriness, sugar for sweetness, or tamarind for sourness. Add sliced Thai chili if you want heat, and serve promptly with lime wedges on the side.
Tips
- Balance the sourness gradually. Tamarind concentrates vary in strength, so begin with the stated amount and taste after it dissolves. Add more in small increments; it is easier to make the broth more tart than to correct an overly sour pot. If your concentrate is very thick or especially potent, start with 1 tablespoon (15 ml).
- Choose fish that holds together. Catfish is a familiar choice for many Cambodian-style fish soups, while cod and basa are accessible alternatives. Cut the fillets into generous pieces and add them only after the vegetables have started cooking. Stirring repeatedly or boiling vigorously can break the fish apart.
- Know your herb substitute. Rice paddy herb, or ma om, has a distinctive citrusy, savory aroma and may be sold fresh at Southeast Asian markets. If you cannot find it, use 1/4 cup (8 g) extra cilantro plus 1/4 cup (5 g) chopped dill. That blend is convenient and fresh, though it will not taste exactly like rice paddy herb.
- Season at the end, too. Fish sauce, stock, tamarind, and even the ripeness of the pineapple all affect the final broth. Keep the first seasoning modest, then adjust when the fish and vegetables are cooked. If you use salted stock, reduce or omit the initial salt until you taste the finished soup.
Serving Suggestions
Serve the soup hot in individual bowls, making sure each portion gets fish, pineapple, tomato, and okra as well as broth. A bowl of steamed jasmine rice is the simplest accompaniment: eat the rice alongside the soup, or spoon some broth over it at the table. Rice noodles also work if you want a more substantial bowl, though they are not necessary for the soup itself.
Offer lime wedges, extra sliced scallions, and chili at the table so each person can tune the acidity and heat. The soup is already seasoned with fish sauce, so put out extra fish sauce only if your diners prefer a more savory finish. For a full meal, pair it with plain rice and a simple vegetable or a small plate of fresh cucumber; strongly seasoned sides can compete with the broth’s delicate sweet-sour balance.
Variations
Use another protein: Firm white fish is especially convenient because it cooks quickly in the broth, but peeled shrimp can be used instead. Add shrimp near the end and cook until they are opaque and firm; check the thickest piece with a thermometer and cook seafood to 145°F (63°C). For a meat-free version, replace the fish sauce with a vegetarian mushroom seasoning or soy sauce and use firm tofu, while recognizing that the broth will have a different, less seafood-forward character.
Change the vegetables: Water spinach, often labeled morning glory, is a suitable addition when available. Cut it into manageable lengths and add it during the final few minutes so it wilts without turning limp. You can also use extra bean sprouts or sliced green beans if okra is unavailable. These swaps change the texture, but the soup still benefits from a mix of soft and crisp ingredients.
Adjust the fruit and souring agent: Ripe pineapple makes the broth rounder and sweeter; a less ripe pineapple gives it a sharper edge. If you cannot find tamarind concentrate, use 2 tablespoons (30 ml) lime juice as a practical substitute, then adjust the sugar to taste. Lime makes a brighter, more citrusy soup rather than tamarind’s deeper fruit-like sourness, so add it at the end instead of simmering it for the full cooking time.
Make it milder or hotter: Leave out the Thai chili for a gentle soup, or serve sliced chili separately for diners who want more heat. If you include chili in the pot, add a little at first and taste before adding more; the heat can build as it simmers. A small amount of sliced ginger can also add warmth, although it is an optional variation rather than a substitute for the soup’s sour-sweet seasoning.
Storage and Reheating
Cool leftovers promptly and refrigerate them within 2 hours of cooking in a covered, shallow container. For the best fish texture, eat the soup within 2 days; properly refrigerated cooked leftovers should be used within 3 to 4 days. The herbs and sprouts will soften in storage, so you can reserve some fresh herbs to add to individual bowls when serving leftover portions.
Reheat only the amount you plan to eat in a saucepan over medium heat, stirring gently until the soup is steaming throughout and reaches 165°F (74°C), the safe temperature for reheated leftovers. Avoid a prolonged boil, which can make the fish tough and cause it to break into small pieces. You may also reheat a portion in the microwave in a covered, microwave-safe bowl, stirring carefully midway and checking the temperature in more than one spot.
For longer storage, freeze the cooled soup in airtight, freezer-safe containers for up to 2 months for best quality. The fish and vegetables may become softer after thawing, but the soup remains usable. Thaw it overnight in the refrigerator and reheat to 165°F (74°C); do not leave it to thaw on the counter.
Frequently Asked Questions
What makes Cambodian sweet and sour soup sour?
Tamarind is the main souring ingredient in this recipe, and it gives the broth a rounded, fruity tartness. Some versions use other sour ingredients or a different balance of fruit, herbs, and seasoning. Taste as you cook because the strength of packaged tamarind concentrate can differ considerably.
Is samlor machu always made with fish?
No. Cambodian sour soups have many household and regional versions, and the protein and vegetables can vary. Fish is a good match for this clear, tamarind-seasoned broth, but shrimp, other seafood, or a meat-free combination can be used with appropriate changes to the cooking time and seasoning.
Can I make this soup without tamarind?
Yes. Lime juice is the most practical substitute in this recipe; add it toward the end, starting with 2 tablespoons (30 ml), and adjust the sugar to balance the sharper citrus taste. The result will be pleasant but noticeably different from a soup made with tamarind. Avoid sweetened tamarind drink syrup, which can make the broth unexpectedly sugary.
Why did my fish break apart in the soup?
Fish can fall apart if it is cut too small, stirred often, or cooked in a hard boil. Use thick, even pieces, keep the broth at a gentle simmer, and add the fish after the vegetables are nearly tender. Check a thick piece for doneness and lift portions carefully with a broad spoon.
Can I prepare the soup in advance?
You can chop the vegetables and herbs ahead, keeping the herbs covered and refrigerated separately, or prepare the broth through the pineapple step and chill it promptly. For the freshest texture, cook the fish and add the sprouts and herbs shortly before serving. If reheating a fully cooked batch, bring it to 165°F (74°C) and expect the herbs and sprouts to be softer than when freshly added.
Related
- Cajun Bean Ham Soup with Andouille and Greens
- Japanese Cabbage Soup with Miso and Tofu
- Jamaican Brown Stew Tofu: A Rich, Savory One-Pan Meal
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).