A cooking platform built around craft, culture, and the stories behind what we eat.

Created by
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.
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.
Quantity
800g
cut into individual rib pieces, about 2-inch segments
Quantity
6 cups
Quantity
3 stalks
cut into 2-inch pieces, bruised
Quantity
5 slices
1/4 inch thick
Quantity
5
torn
Quantity
5
peeled and halved
Quantity
2 tablespoons
liquid strained
Quantity
2 tablespoons
Quantity
4 tablespoons (about 4 limes)
Quantity
10
toasted and crushed
Quantity
1 teaspoon
Quantity
2 tablespoons
Quantity
3 stalks
cut into 1-inch pieces
Quantity
1/4 cup
leaves and stems roughly chopped
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 |
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.
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.
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.
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.
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.
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.
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.
1 serving (about 500g)
Culinary mentorship, cultural storytelling, and the editorial depth that makes cooking meaningful.
Explore Culinary Advisor