Bak Kut Teh: Malaysian Pork Rib Soup

Bak kut teh is the soup that eats like a meal. Pork spare ribs go into a pot with a startling amount of cracked white peppercorns, one whole unpeeled garlic bulb, and a small spice bag, and ninety minutes of gentle simmering later the ribs are so tender they slide off the bone into a broth that is clear, pale-amber, and properly peppery. Nothing is ground into the broth, nothing is thickened — the clarity is the whole point, and it only happens if you treat the ribs right before they ever meet the spices.

Overhead bowl of bak kut teh, Malaysian pork rib soup with clear pale-amber peppery broth, pork spare ribs on the bone, and whole unpeeled garlic cloves, with steamed rice, toasted youtiao, and chili-soy dipping sauce on a wooden table

What Is Bak Kut Teh?

Bak kut teh (肉骨茶, “meat bone tea”) is a pork rib soup born in Klang, Malaysia, carried over by Hokkien laborers who simmered cheap cuts with warming spices to get through cold mornings. The “teh” in the name is literal: it is traditionally served with Chinese tea alongside, and that is still how the old stalls do it.

There are two great schools. The Hokkien (Klang) style is dark and herbal, built on dang gui and a big bag of Chinese herbs. The Teochew (Singapore) style — the one I make here — is clear and peppery, built on white peppercorns and garlic alone. Same bones, completely different bowl. If you like your soups to warm you from the inside out on a winter night, the Teochew version is the one.

The Broth Method: Blanch, Toast, Pre-Infuse, Barely Simmer

Four moves make or break this soup, and all of them happen before the ribs start their long simmer:

  1. Blanch the ribs a full 5 minutes, then rinse. The scum that floats up in the first minutes of cooking is blood proteins, and if it goes into the soup pot it never fully leaves — the broth stays grey and murky. Blanching in plain water, discarding that water, and rinsing the ribs under the tap gives you a clean start. Skipping this is the number-one reason homemade bak kut teh looks muddy.
  2. Toast and crack your own peppercorns. Twenty grams of whole white peppercorns (about 2 1/2 tablespoons) get 2–3 minutes in a dry pan until they smell sharp and floral, then a coarse crush in a mortar. Pre-ground white pepper fades fast; whole berries cracked right before cooking give the broth its unmistakable pepper backbone. How fine you crush them sets the heat: coarse for warmth, finer for a real bite.
  3. Pre-infuse the spices 15 minutes before the ribs go in. Once the fresh water is at a boil, the spice bag and the whole garlic bulb go in first and simmer alone for 15–20 minutes. The broth takes on the pepper and garlic character as a base layer, so the pork flavor that follows sits on top of seasoning instead of fighting its way through raw spice.
  4. A bare simmer, never a boil, for 90 minutes. A hard boil churns fat and proteins into an emulsion and the broth never clears. A gentle, barely-bubbling simmer lets the collagen in the bones dissolve slowly, which gives the broth its faint silkiness. Skim whatever foam rises in the first 20 minutes. Here is the part worth knowing: the pot will look slightly cloudy when the ribs first go in even after blanching — stay the course and keep it gentle, and it clears to pale amber by the 30-minute mark as the last proteins settle.

Salt goes in at the end, not the beginning. The broth reduces a little over 90 minutes, and seasoning early means seasoning blind.

Ingredients

For the ribs and broth

  • 1 kg (2.2 lb) pork spare ribs or prime ribs, cut into 5 cm (2 inch) pieces
  • 2.5 L (about 10 1/2 cups) water, plus more for blanching
  • 1 whole head of garlic, unpeeled, lightly bruised
  • 1 1/2 teaspoons fine sea salt, plus more to taste
  • 1 tablespoon light soy sauce, plus more to taste
  • 1/2 teaspoon dark soy sauce (for color)
  • 1/2 teaspoon sugar

For the spice bag

  • 20 g (about 2 1/2 tablespoons) whole white peppercorns
  • 2 star anise
  • 10 whole cloves
  • 1 cinnamon stick (about 8 cm)
  • 1 teaspoon fennel seeds

For the chili-soy dipping sauce

  • 3 tablespoons light soy sauce
  • 1 tablespoon dark soy sauce
  • 1 large red chili, thinly sliced
  • 1 clove garlic, minced

For serving

  • Steamed jasmine rice
  • Youtiao (Chinese crullers), toasted until crisp and cut into pieces

How to Make Bak Kut Teh

  1. Blanch the ribs. Bring a large pot of plain water to a boil, add the ribs, and boil 5 minutes. Lift the ribs out, discard the water, and rinse the ribs well under running water. Rinse the pot out too.
  2. Toast and bag the spices. In a dry skillet over medium heat, toast the white peppercorns 2–3 minutes until aromatic. Add the star anise, cloves, cinnamon, and fennel; toast 1 minute more. Crush the peppercorns coarsely and tie all the spices in a muslin bag.
  3. Pre-infuse. In the rinsed pot, bring 2.5 L of fresh water to a boil. Add the spice bag and the whole bruised garlic bulb, reduce to a simmer, and let the spices infuse alone for 15 minutes.

Bak kut teh simmering in a large soup pot: pork ribs, a whole unpeeled garlic bulb, and a muslin spice bag in gently bubbling clear broth, a skimmer lifting light foam from the surface

  1. Simmer the ribs. Add the blanched ribs, bring back to a bare simmer, and cook partially covered for 90 minutes — a gentle ripple on the surface, never a rolling boil. Skim foam and fat as needed in the first 20 minutes.
  2. Season at the end. Fish out the spice bag. Stir in the salt, light soy, dark soy, and sugar. Taste and adjust — the broth should read savory and garlicky first, peppery second, seasoned rather than salty.
  3. Make the dipping sauce and toast the youtiao. Combine the light soy, dark soy, sliced chili, and minced garlic in a small dish. Toast the youtiao until crisp (a hot oven or dry skillet, a few minutes) and cut into pieces.
  4. Serve. Ladle ribs and broth into bowls. Serve with steamed jasmine rice — my jasmine rice guide keeps it fluffy — the toasted youtiao for dunking, and the chili-soy dipping sauce alongside.

Bak kut teh table spread: small dish of light soy dipping sauce with sliced red chilies and minced garlic, golden toasted youtiao cut into pieces, and a bowl of steamed jasmine rice

Troubleshooting: Fix My Bak Kut Teh

Cloudy broth, tough ribs, bitterness, a pot that tastes of nothing but hot water — each one has a cause and a fix. Tell the tool what went wrong:

HERB & LIME · KITCHEN HELP

Fix My Bak Kut Teh

Choose what went wrong to see a practical next step.

What went wrong with your Bak Kut Teh?

From Paul's kitchen. Results vary with rib size, stove heat, and pepper brand — adjust timing to your setup.

Quick reference (also works without JavaScript)

The broth is cloudy or grey

Cause: The ribs went in unblanched, or the pot boiled hard — both churn blood proteins and fat into the broth as an emulsion instead of letting them settle out.

Try: For this pot, strain the broth through a fine-mesh sieve lined with a double layer of cheesecloth — that clears the haze. Return the ribs to the cleared broth and keep it at a bare simmer.

Prevent: Next time: blanch the ribs a full 5 minutes and rinse them (and the pot) before they go into the soup; then keep the pot at a gentle ripple, never a rolling boil, and skim the foam that rises in the first 20 minutes.

The broth tastes bitter

Cause: Too much clove or spices toasted past fragrant — clove turns bitter fast, and bitterness is the one flaw that dilutes but never fully disappears.

Try: Pull the spice bag out now so it can't get worse, and add hot water 250 ml at a time until the bitter edge softens to the background.

Prevent: Count your cloves — 10 is plenty for 1 kg of ribs — and toast the spice mix only 2 to 3 minutes, just until fragrant. Bag the spices so you can remove them the moment the broth tastes right.

The ribs are still tough

Cause: The simmer was too short or too hard. Collagen only converts to gelatin with long, gentle heat; high heat seizes the fibers and locks in toughness.

Try: Keep the pot on the lowest simmer it will hold and give it another 20 to 30 minutes, then test a rib — it should pull away from the bone with a gentle tug.

Prevent: Plan on a full 90 minutes at a bare simmer for 5 cm rib pieces, and don't let the pot boil — a hard boil tightens the meat instead of relaxing it, no matter how long it cooks.

The broth is too salty

Cause: The salt and soy went in early, then the broth reduced and concentrated them — seasoning blind before reduction is the classic overshoot.

Try: Stir in 250 ml of hot water at a time (not cold — it stalls the simmer), tasting between additions, until the salt sits in the background.

Prevent: Season only at the very end, after the 90-minute simmer and its reduction. Add half the salt and soy first, taste, then adjust — you can always add more, you can't take it back.

The broth is flat, not peppery

Cause: Pre-ground white pepper lost its punch, or the whole peppercorns went in uncrushed — the volatile oils that carry pepper heat only release once the berry is cracked.

Try: Stir in 1/2 teaspoon of freshly cracked white pepper at a time, off the heat, until the peppery warmth comes forward.

Prevent: Toast whole white peppercorns 2 to 3 minutes and crack them coarsely yourself right before cooking — pre-ground pepper fades fast, and uncrushed berries give up almost no heat to the broth.

Overhead bowl of bak kut teh, Malaysian pork rib soup with clear pale-amber peppery broth, pork spare ribs on the bone, and whole unpeeled garlic cloves, with steamed rice, toasted youtiao, and chili-soy dipping sauce on a wooden table

Bak Kut Teh: Malaysian Pork Rib Soup

Clear, peppery pork rib soup with 20 g of cracked white peppercorns, a whole unpeeled garlic bulb, and a small spice bag — blanched ribs simmered gently 90 minutes until they slide off the bone. Served with jasmine rice, toasted youtiao, and a chili-soy dipping sauce.
Prep Time 20 minutes
Cook Time 1 hour 45 minutes
Total Time 2 hours 5 minutes
Servings: 4 servings

Ingredients
  

For the ribs and broth
  • 1 kg pork spare ribs or prime ribs 2.2 lb; cut into 5 cm (2 inch) pieces
  • 2.5 L water about 10 1/2 cups, plus more for blanching
  • 1 whole head of garlic unpeeled, lightly bruised
  • 1 1/2 teaspoons fine sea salt plus more to taste
  • 1 tablespoon light soy sauce plus more to taste
  • 1/2 teaspoon dark soy sauce for color
  • 1/2 teaspoon sugar
For the spice bag
  • 20 g whole white peppercorns about 2 1/2 tablespoons
  • 2 star anise
  • 10 whole cloves
  • 1 cinnamon stick about 8 cm
  • 1 teaspoon fennel seeds
For the chili-soy dipping sauce
  • 3 tablespoons light soy sauce
  • 1 tablespoon dark soy sauce
  • 1 large red chili thinly sliced
  • 1 clove garlic minced
For serving
  • steamed jasmine rice
  • youtiao (Chinese crullers) toasted until crisp, cut into pieces

Method
 

  1. Blanch the ribs. Bring a large pot of plain water to a boil, add the ribs, and boil 5 minutes. Lift the ribs out, discard the water, and rinse the ribs well under running water. Rinse the pot out too.
  2. Toast and bag the spices. In a dry skillet over medium heat, toast the white peppercorns 2–3 minutes until aromatic. Add the star anise, cloves, cinnamon, and fennel; toast 1 minute more. Crush the peppercorns coarsely and tie all the spices in a muslin bag.
  3. Pre-infuse. In the rinsed pot, bring 2.5 L of fresh water to a boil. Add the spice bag and the whole bruised garlic bulb, reduce to a simmer, and let the spices infuse alone for 15 minutes.
  4. Simmer the ribs. Add the blanched ribs, bring back to a bare simmer, and cook partially covered for 90 minutes — a gentle ripple on the surface, never a rolling boil. Skim foam and fat as needed in the first 20 minutes.
  5. Season at the end. Fish out the spice bag. Stir in the salt, light soy, dark soy, and sugar. Taste and adjust — the broth should read savory and garlicky first, peppery second, seasoned rather than salty.
  6. Make the dipping sauce and toast the youtiao. Combine the light soy, dark soy, sliced chili, and minced garlic in a small dish. Toast the youtiao until crisp (a hot oven or dry skillet, a few minutes) and cut into pieces.
  7. Serve. Ladle ribs and broth into bowls. Serve with steamed jasmine rice, the toasted youtiao for dunking, and the chili-soy dipping sauce alongside.

Notes

Note 1: Blanch the ribs a full 5 minutes and rinse them (and the pot) before they go into the soup. The scum that rises in those first minutes is blood proteins — skip the blanch and the broth stays grey and murky no matter what you do after.
Note 2: Toast and crack your own white peppercorns, 2–3 minutes in a dry pan until aromatic, then a coarse crush. Pre-ground white pepper fades fast; whole berries cracked right before cooking give the broth its pepper backbone. Crush finer for more heat.
Note 3: Count your cloves — 10 is plenty. Clove is the one spice here that turns on you; a handful makes the whole pot bitter, and bitterness is the one flaw you can't fully undo.
Note 4: Keep the pot at a bare simmer, never a boil, for the full 90 minutes. A hard boil churns fat into an emulsion and the broth never clears; a gentle ripple lets the collagen dissolve slowly and gives the broth its faint silkiness.
Note 5: The garlic goes in unpeeled on purpose — the skin keeps the cloves from disintegrating over the long simmer. Salt and soy go in only at the very end, after reduction; seasoning early means seasoning blind.
Note 6: Leftover broth gels in the fridge from the rib collagen — that's a good sign. Reheat gently and pour it over rice, or use it as the liquid for a weeknight noodle soup.

Paul’s Notes

  • The 30-minute look never lies. At 30 minutes, a properly managed pot turns from slightly cloudy to clear pale amber. If yours is still murky at 30 minutes, your simmer was too hard — drop the heat further and give it another 20. It will not fully recover, but it will improve.
  • Garlic goes in unpeeled on purpose. The skin keeps the cloves from disintegrating into the broth over 90 minutes, and it adds a deeper garlic character than peeled cloves alone. One whole head sounds like a lot; the long simmer tames it completely.
  • Count your cloves. Ten cloves is plenty. Clove is the one spice here that turns on you — a handful makes the whole pot bitter, and bitterness is the one flaw you cannot fully undo.
  • Rib size matters more than rib cut. Five-centimeter pieces give you even cooking and a good meat-to-bone ratio in every bowl. Whole racks or huge chunks cook unevenly — done on the outside, stubborn near the bone.
  • Save the dark soy for the last five minutes. It is there for color, not flavor. A half teaspoon deepens the broth to the pale amber the stalls aim for without pushing it toward the dark Hokkien style.
  • Leftover broth is a base, not a leftover. It gels in the fridge from the rib collagen. Reheat gently and pour it over rice, or use it as the liquid for mee goreng noodles — it makes a weeknight noodle soup that tastes like you worked all day.

Variations

  • Hokkien dark-herbal style: swap the white-pepper-forward bag for a prepared bak kut teh herb sachet (dang gui, yu zhu, chuan xiong), add 2 tablespoons of dark soy, and simmer 2 hours. Same ribs, different century.
  • Chicken bak kut teh (chik kut teh): use bone-in chicken thighs instead of ribs and simmer 45 minutes. Lighter, weeknight-friendly, and the pepper-garlic broth works just as well.
  • Mushroom version: add 6 dried shiitake (soaked 30 minutes, stems trimmed) with the ribs. They add a savory depth that reads almost meaty — see my dried shiitake guide for the soak.
  • Leafy greens: blanch a handful of yu choy or bok choy separately and lay it in the bowl before ladling the broth. The bitter edge of the greens is the classic contrast to the rich soup.

More Malaysian Recipes

Keep the Malaysian table going: Laksa: Coconut Curry Noodle Soup for the rich curry broth on the other side of the country’s soup culture, Mee Goreng: Malay Stir-Fried Noodles for the sweet-savory noodle plate, Malaysian Char Kuey Teow for wok-charred flat noodles, and Chicken Satay with Peanut Sauce for the grill course.

Leave a Comment

Recipe Rating