Isan bone soup that follows a different governing system: no coconut, no sweetness, no compromise. Padaek for depth, lime for assault, khao khua for body. The bones are the point.
Soups & Stews
Thai
Weeknight
Comfort Food
20 min
Active Time
1 hr cook•1 hr 20 min total
Yield4 servings
Tom saep breaks every Central Thai assumption about soup. No coconut cream. No balanced sweet-sour harmony. No gentle aromatics floating in a polished broth. This is Isan. The rules are different here.
Ajarn always said the four pillars govern Thai cuisine: fish sauce for salt, palm sugar for sweet, lime for sour, chili for heat. That framework holds across the country, but Isan tilts the balance. In tom saep, sour dominates. Heat is relentless. Sweetness is almost absent. And the salt doesn't come from fish sauce alone. It comes from padaek (ปลาแดก), the chunky, funky fermented fish that is the backbone of Isan cooking. Padaek delivers salinity plus a deep, earthy umami that regular nam pla can't touch. Don't substitute with fish sauce alone. You'll get a thinner, cleaner soup, which is exactly what tom saep is not supposed to be.
The bones matter more than the meat. I need you to hear that. A lot of people treat tom saep like it's a pork soup with bones in it. Wrong. It's a bone soup where the meat is a bonus. Pork ribs get simmered until the marrow starts dissolving into the broth, until the cartilage goes soft, until the collagen gives the liquid a body that no amount of seasoning can fake. You chew on those bones. You suck the marrow. That's Isan eating.
Khao khua (ข้าวคั่ว), the toasted sticky rice powder you know from larb, shows up here too. Stir it into the finished soup and it thickens the broth just slightly, adds that signature nutty, smoky dimension. It's not a garnish. It's structural. Without khao khua, tom saep is just spicy bone water. With it, the soup has grip. My mother's family in Isan never made a bone soup without it.
Tom saep (ต้มแซ่บ) is a bone soup from Thailand's Isan (northeastern) region, closely related to Lao culinary traditions. The name "saep" (แซ่บ) is Isan-Lao dialect for "delicious" and specifically connotes the sharp, sour, spicy flavor profile that defines Isan soups. Unlike Central Thai soups such as tom yam, which evolved in court and urban kitchens with refined aromatics, tom saep is village food built on whatever bones were available after butchering, seasoned with padaek from the household jar. The dish traveled to Bangkok with Isan migrant workers in the 1970s and 1980s, becoming a staple of the Isan restaurants (ร้านอาหารอีสาน) that now outnumber every other regional cuisine in the capital.
The technique, the tradition, and the story behind every dish.
cut into individual rib pieces, about 2-inch segments
water
Quantity
6 cups
lemongrass (takhrai)
Quantity
3 stalks
cut into 2-inch pieces, bruised
galangal (kha)
Quantity
5 slices
1/4 inch thick
kaffir lime leaves (bai makrut)
Quantity
5
torn
shallots (hom daeng)
Quantity
5
peeled and halved
padaek (fermented fish, ปลาแดก)
Quantity
2 tablespoons
liquid strained
fish sauce (nam pla)
Quantity
2 tablespoons
lime juice (nam manao)
Quantity
4 tablespoons (about 4 limes)
dried bird's eye chilies (prik khi nu haeng)
Quantity
10
toasted and crushed
palm sugar (nam tan pip)
Quantity
1 teaspoon
khao khua (toasted sticky rice powder)
Quantity
2 tablespoons
green onion (ton hom)
Quantity
3 stalks
cut into 1-inch pieces
cilantro (pak chi)
Quantity
1/4 cup
leaves and stems roughly chopped
sawtooth coriander (pak chi farang)
Quantity
4 sprigs
cut into 1-inch pieces
Ingredient
Quantity
pork spare ribscut into individual rib pieces, about 2-inch segments
800g
water
6 cups
lemongrass (takhrai)cut into 2-inch pieces, bruised
3 stalks
galangal (kha)1/4 inch thick
5 slices
kaffir lime leaves (bai makrut)torn
5
shallots (hom daeng)peeled and halved
5
padaek (fermented fish, ปลาแดก)liquid strained
2 tablespoons
fish sauce (nam pla)
2 tablespoons
lime juice (nam manao)
4 tablespoons (about 4 limes)
dried bird's eye chilies (prik khi nu haeng)toasted and crushed
10
palm sugar (nam tan pip)
1 teaspoon
khao khua (toasted sticky rice powder)
2 tablespoons
green onion (ton hom)cut into 1-inch pieces
3 stalks
cilantro (pak chi)leaves and stems roughly chopped
1/4 cup
sawtooth coriander (pak chi farang)cut into 1-inch pieces
4 sprigs
Equipment Needed
•Large stockpot or heavy-bottomed pot
•Dry wok or skillet for toasting rice and chilies
•Granite mortar and pestle (krok hin) for crushing rice and chilies
•Fine mesh strainer for padaek
Instructions
1
Parboil the ribs
Put the pork ribs in a pot, cover with cold water, and bring to a rolling boil. Let them boil hard for 3 minutes. You'll see grey scum rising to the surface. That's blood proteins and impurities. Drain the whole pot, rinse the ribs under cold water, and scrub the pot clean. This step is non-negotiable. Skip it and your broth will be murky and have a sour, off taste that no amount of lime can fix. Clean bones make clean broth.
Ask your butcher to cut the ribs into 2-inch segments across the bone. You want pieces that expose the marrow on both sides. The marrow is where the body of the broth comes from.
2
Toast the rice powder
While the ribs parboil, make the khao khua if you don't already have some. Take a handful of uncooked sticky rice (about 3 tablespoons dry) and toast it in a dry wok or skillet over medium heat. Keep it moving. Shake the pan. The grains will go from white to golden to deep amber over about 5 minutes. The smell shifts from nothing to popcorn to deeply nutty. Stop when they're the color of a monk's robe. Let them cool, then pound in a mortar or grind in a spice grinder to a coarse powder. Not fine flour. You want grit. That texture is part of the dish.
Khao khua keeps for weeks in a sealed jar at room temperature. Make a big batch. You'll use it in larb, nam tok, tom saep, and every other Isan dish that needs that smoky, nutty crunch.
3
Toast the dried chilies
In the same dry pan, toast the dried bird's eye chilies over medium heat for 1 to 2 minutes, pressing them flat with a spatula. They'll blister, darken in spots, and release a sharp, smoky aroma that hits the back of your throat. Let them cool, then crush them roughly in a mortar or crumble by hand. You want flakes and seeds, not powder. The seeds carry heat. The flakes carry smoke. Both go in the soup.
4
Build the bone broth
Return the cleaned ribs to the clean pot. Add 6 cups of fresh water. Bring to a boil, then drop to a steady simmer. Add the lemongrass, galangal, kaffir lime leaves, and halved shallots. These go in whole, not pounded. Tom saep, like tom yam, is an infusion soup, not a paste-based dish. Simmer for 45 minutes to an hour. The meat should pull away from the bone easily. The broth should have a slight body from the collagen. If you can see a faint milkiness and the broth coats the back of a spoon just slightly, the bones have done their job.
Don't rush this. A 20-minute simmer gives you cooked ribs in water. An hour gives you bone broth. The difference is structural. Collagen needs time to break down. Be patient and keep it at a gentle simmer, not a hard boil, or the broth goes cloudy.
5
Season with padaek
Add the strained padaek liquid to the simmering broth. Stir it in. The smell will be aggressive. That's correct. Padaek is fermented fish, chunks of freshwater fish preserved in salt and rice bran for months. It smells like it sounds. But in the broth, it transforms into a deep, rounded umami that fish sauce alone cannot deliver. Add the nam pla on top of the padaek. They work together: padaek for depth, nam pla for clean salinity. Two layers of salt, two different characters.
Strain the padaek through a fine mesh sieve. You want the liquid, not the fish chunks, in this soup. Some cooks add the chunks too, but for your first time, the strained liquid gives you the flavor without the texture shock.
6
Hit it with sour and heat
Remove the pot from the heat. This is important: the lime juice goes in off the heat. Cooking lime juice kills it. You want that raw, aggressive acidity slamming into the hot broth. Add 4 tablespoons of lime juice. Add the crushed toasted chilies. Add the palm sugar, just a teaspoon, barely there, just enough to take the razor edge off the sour. Taste it now. The soup should be sour first, salty second, hot third, with the faintest whisper of sweetness way in the back. If it's not sour enough to make you wince slightly, add more lime. Tom saep is not polite.
Ajarn always said: add sour last, add sour slowly. Lime juice changes the moment it hits. You can always add more. You can't pull it back.
7
Add khao khua and herbs
Stir in the khao khua. The toasted rice powder will cloud the broth slightly and give it a grainy body. That's what you want. It thickens without heaviness. Add the green onion, cilantro, and sawtooth coriander. Stir once. Ladle into bowls immediately, making sure each bowl gets ribs, broth, and a share of the herbs. Serve with sticky rice. Not jasmine. Sticky rice (khao niew). That's the only accompaniment. You tear off a piece, dip it, eat it, chase it with a bone. That's how Isan eats.
Chef Tips
•Padaek (ปลาแดก) is the soul of this soup. Fish sauce alone will give you a cleaner, thinner flavor, which is exactly what this soup shouldn't be. Padaek delivers a fermented funk, a rounded depth that comes from months of fish breaking down in salt and rice bran. Find it at any Southeast Asian grocery store, usually in a jar with visible fish chunks. If you genuinely cannot find it, use 3 tablespoons of fish sauce plus 1 teaspoon of good shrimp paste (kapi) dissolved in the broth. It's not the same, but it gets you closer than fish sauce alone.
•The bones matter more than the meat. Cut ribs expose marrow on both ends, and that marrow dissolves into the broth during the long simmer to give it body and richness that no seasoning can replicate. Pork neck bones (kraduk kho moo) work well too, often even better because they have more cartilage. This is a bone soup. Treat it like one.
•Tom saep should taste aggressive. If your first sip is comfortable, something is wrong. The sour should hit first, hard and bright from the lime. The heat should build from the toasted dried chilies. The salt should come from two directions: the padaek underneath, the fish sauce on top. Bangkok versions often soften this balance with more sugar or less lime. That's not tom saep. That's Central Thai politeness applied to an Isan dish.
•Khao khua is not a garnish. It's structural. Toasted sticky rice powder gives the broth a slight thickness and a smoky, nutty dimension that ties the whole soup together. Without it, you have hot and sour bone broth. With it, you have tom saep. Make a big batch and keep it in a jar. You'll use it constantly if you cook Isan food.
•Sawtooth coriander (pak chi farang, ผักชีฝรั่ง) is the Isan herb. It looks like a long serrated leaf, not at all like regular cilantro, but it belongs to the same family with a stronger, more persistent flavor. Isan cooks use it in almost everything. If you can't find it, use extra cilantro stems (stems have more flavor thanleaves), but know you're losing a defining element.
Advance Preparation
•Khao khua (toasted rice powder) can be made weeks in advance and stored in a sealed jar at room temperature. Make a large batch.
•Ribs can be parboiled and refrigerated a day ahead. Bring to room temperature before simmering.
•The broth can be simmered with the bones and aromatics up to a day ahead and refrigerated. Reheat gently, then add the padaek, lime juice, chilies, khao khua, and fresh herbs just before serving. The lime and herbs must be fresh. They don't survive reheating.
Frequently Asked Questions
Nutrition Information
1 serving (about 500g)
Calories
360 calories
Total Fat
24 g
Saturated Fat
9 g
Trans Fat
0 g
Unsaturated Fat
14 g
Cholesterol
100 mg
Sodium
1350 mg
Total Carbohydrates
13 g
Dietary Fiber
2 g
Sugars
4 g
Protein
22 g
Where cooking meets culture.
Culinary guides, cultural storytelling, and the editorial depth that makes cooking meaningful.