Soups & Stews
This bak kut teh soup recipe delivers the rich, aromatic essence of Singaporean comfort food in one deeply satisfying bowl. The secret lies in slow-simmering pork ribs with star anise, cinnamon, and lemongrass until the meat falls off the bone and the broth becomes a collagen-rich elixir.
I've perfected this version through years of testing—balancing traditional techniques with modern shortcuts for home cooks.
The process begins with cleaning and parboiling the ribs to remove impurities, followed by a long simmer with aromatic spices that infuse the broth with complex, warming flavors. Potatoes add heartiness, while a final touch of lime brightens the deep, savory notes.
What makes this recipe special is how the star anise and cinnamon create that signature bak kut teh aroma while keeping the broth clear and flavorful.
By the time you're done, you'll have tender, shatteringly crispy pork ribs swimming in a fragrant, slightly sweet broth that's rich enough to stand alone or pair perfectly with steamed jasmine rice.
The slow cooking transforms tough cuts into melt-in-your-mouth perfection, while the spices deliver that unmistakable Singaporean soul. This is the kind of soup that warms both body and spirit.
Serve with a side of chili paste for heat lovers or fresh cilantro for brightness. The pressure cooker adaptation cuts prep time in half without sacrificing depth of flavor—ideal for busy weeknights. Let's bring this iconic dish to your kitchen with authentic techniques and modern convenience.
Ingredients for bak kut teh soup
These aromatic ingredients bring Singapore's iconic bak kut teh to your kitchen with deep, warming flavors.
| Ingredient | Amount | Notes |
|---|---|---|
| Pork Ribs (Bone-In) 🍖 | 2 ½ lb | Pork spare ribs, cut into 2-inch pieces |
| Russet Potatoes 🥔 | 1 ½ lb | Peeled, cut into 1-inch chunks |
| Star Anise Pods 🌿 | 2 whole | Whole, for infusion |
| Cinnamon Sticks 🌿 | 2 whole | For aromatic depth |
| Lemongrass Stalks 🌿 | 2 whole | Bruised, cut into 2-inch pieces |
| Fresh Ginger 🧄 | 2 inch | Sliced into thin coins |
| Garlic Cloves 🧄 | 6 cloves | Smashed, for robust flavor |
| Dried Shrimp 🦐 | ½ oz | Rehydrated for umami boost |
| Light Soy Sauce 🥄 | ¼ cup | For salty depth |
| Dark Soy Sauce 🥄 | 1 tbsp | For rich color |
| Lime Wedges 🍋 | 2 whole | For finishing brightness |
| Fresh Cilantro 🌿 | ¼ cup | Chopped, for garnish |
| Salt 🧂 | 1 ½ tsp | Adjust to taste |
| White Peppercorns 🌶️ | ½ tsp | Lightly toasted |
| Jasmine Rice 🍚 | 1 ½ cups | For serving |
The ribs are the heart of this soup—look for meaty, well-marbled pork spare ribs at your local butcher or Asian grocery store. If you can't find them fresh, frozen ribs work fine—just thaw overnight in the fridge. The star anise and cinnamon are non-negotiable for that signature aroma, so grab them from the spice aisle. Penzeys or local Asian markets often have the best quality. Fresh lemongrass and ginger? The produce section at Whole Foods usually has vibrant stalks—avoid anything wilted or yellowed.
No star anise? Substitute 1 tsp anise seeds for the pods, but the flavor won't be identical. Short on lemongrass? Double the ginger and add 1 tbsp lime zest for brightness. The dried shrimp can be tricky to find—check the Asian foods aisle or order online. If you can't get them, add 1 tsp fish sauce or extra soy sauce for umami. The potatoes should be firm and starchy—Russets are ideal, but Yukon Golds work too. For extra richness, add 1 tbsp of coconut milk at the end.
This soup tastes even better the next day as flavors meld. Store in an airtight container in the fridge for up to 5 days—the broth thickens beautifully. For freezing, portion into single-serving containers and keep for 3 months. Reheat gently on the stove, adding a splash of water if it's too thick. Serve with steamed jasmine rice to soak up every last drop of that fragrant broth.
Why You'll Love This Recipe
- One-Pot Wonder: I swear by this recipe—just toss the ribs, potatoes, and spices into one pot, then let it simmer. No chopping, no fussing, and honestly? The hardest part is waiting for the aroma to fill your kitchen.
- Spice Harmony Magic: That combo of star anise, cinnamon, and lemongrass? It’s like a warm hug in a bowl. The pork falls off the bone tender, and the potatoes soak up all that fragrant broth—no extra seasoning needed.
- Leftovers That Beg: Between us, this soup only gets better the next day. The flavors meld even deeper, and I’ve reheated it for lunch three times without getting tired of it. (Yes, even on a Tuesday night.)
- Budget-Friendly Feast: Bone-in pork ribs and russets stretch this into a full meal for half the cost of takeout. Plus, the spices last forever—just crack open a pod or stick when you’re ready to cook. My wallet thanks me every time.
Step-by-step instructions for slow-simmered pork ribs with star anise zing
Here's how to craft this fragrant, deeply flavorful soup that balances rich pork with aromatic spices.
Prepare the Pork Ribs and Aromatics
Begin by rinsing the 2.5 lb pork ribs under cold water and patting them completely dry with paper towels. This step is crucial—any moisture on the ribs will steam them instead of browning them properly. Cut the ribs into 2-inch pieces if they're not already portioned, ensuring each piece has a good balance of meat and bone.
Next, prepare your aromatics. Bruise the 2 whole lemongrass stalks by gently pounding them with the side of a knife or rolling them on a cutting board. This releases their essential oils. Slice the 2-inch fresh ginger into thin coins, smash the 6 cloves garlic with the flat side of your knife, and lightly toast the 0.5 tsp white peppercorns in a dry skillet for 30 seconds until fragrant. Set these aside for now.
Sear the Pork Ribs for Deep Flavor
Heat a large pot or Dutch oven over medium-high heat until it's very hot. Add the pork ribs in a single layer, being careful not to overcrowd the pot. Let them sear undisturbed for 3-4 minutes until they develop a deep golden-brown crust. This caramelization is what builds the rich, complex flavor in your soup.
Once browned, carefully flip each piece and sear the other side for another 3-4 minutes. Remove the ribs and set them aside on a plate. You should have about ¼ cup of rendered fat in the pot—this is your flavor foundation, so don't wipe it out. If the fat isn't deep enough, add 1 tablespoon neutral oil to help build the sauce.
Build the Spiced Base
In the same pot, add the 2 whole star anise pods, 2 whole cinnamon sticks, bruised lemongrass, ginger coins, smashed garlic, and toasted white peppercorns. Stir everything together and let it sizzle for 1-2 minutes until the aromatics become fragrant and the spices begin to darken slightly.
Add the 1.5 lb peeled and chunked russet potatoes to the pot, stirring to coat them in the spiced oil. Pour in 8 cups of water (enough to cover everything by about 1 inch) and bring the mixture to a gentle boil. Once boiling, reduce the heat to low and let it simmer uncovered for 30 minutes, allowing the flavors to meld and the potatoes to begin softening.
Simmer the Ribs and Season
Return the seared pork ribs to the pot, submerging them completely in the broth. Add the 0.5 oz rehydrated dried shrimp (soaked in warm water for 10 minutes and drained), 0.25 cup light soy sauce, and 1 tbsp dark soy sauce. The dark soy sauce will give your soup its signature rich color while adding depth of flavor.
Continue simmering on low heat for 1.5 to 2 hours, maintaining a gentle bubble. The ribs are done when they're fork-tender and easily pull away from the bone. Taste the broth and adjust seasoning with the 1.5 tsp salt if needed. The soup should be deeply flavorful but not overly salty—balance is key here.
Finish and Serve
Once the ribs are tender, carefully remove them from the pot and set them aside. Strain the broth through a fine-mesh sieve to remove the solids, pressing gently on the potatoes to extract their starches, which will thicken the soup slightly. Return the strained broth to the pot and bring it to a gentle simmer.
Add the pork ribs back to the pot and squeeze in the juice from the 2 whole lime wedges. Stir in the 0.25 cup chopped fresh cilantro and simmer for an additional 5 minutes to infuse the bright citrus notes. Serve the soup hot over 1.5 cups cooked jasmine rice, garnished with extra cilantro and a wedge of lime. The aroma alone will transport you to a bustling Malaysian street market!
Pro Tips For Making Bak Kut Teh Soup
- BLANCH THE PORK FIRST: I learned this the hard way—skipping the quick blanch means your ribs will fight you for hours. Parboil the bone-in pork ribs for 10 minutes in salted water before simmering; it loosens connective tissue and cuts cooking time by nearly half. (Yes, even if you're impatient like me.)
- USE WHOLE SPICES BUT CRUSH THEM: Star anise and cinnamon sticks don’t need to be powdered, but give them a light tap with a rolling pin before adding to the pot. This releases their oils without turning the broth into a spice slurry—your soup will taste deeper, not bitter.
- DON’T SKIP THE POTATO PREP: Peel and cut russet potatoes into 2-inch chunks, then parboil them for 8 minutes before adding to the soup. This prevents them from turning to mush later, and the slight pre-cook ensures they absorb flavor instead of watering it down. (Your future self will thank you.)
- SIMMER LOW AND COVERED: After the initial boil, drop the heat to a bare simmer—you should see tiny bubbles, not rolling waves. Cover the pot and let it cook for at least 2 hours. The steam keeps the broth rich, and the low heat melts collagen from the ribs into a velvety texture. (I know, I know—it’s tempting to rush, but trust the process.)
Common mistakes when making great bak kut teh soup
Skipping the Sear
One of the biggest mistakes is skipping the sear on the pork ribs. That golden-brown crust is where the Maillard reaction happens, creating deep, complex flavors. If you rush this step or don't sear at all, your broth will taste flat and one-dimensional.
I always take my time here—3-4 minutes per side—and make sure the pot is screaming hot before adding the ribs. The rendered fat from searing also forms the flavor base for your entire soup. 🌡️
Overcrowding the Pot
Don't overload your pot with too many ribs at once. Crowding prevents proper browning and causes the ribs to steam instead of sear. I recommend working in two batches if needed, especially with a large Dutch oven.
This ensures each piece gets that beautiful crust. Overcrowding also makes it harder to flip the ribs evenly, leading to uneven cooking. Trust me, patience here pays off with restaurant-quality results.
Ignoring the Parboil
Many recipes skip the initial parboil step, but I've found it's crucial for removing impurities from the ribs. Before searing, give your ribs a quick 5-minute boil in salted water. This removes blood and surface scum that can cloud your broth.
After boiling, rinse the ribs thoroughly under cold water. Skipping this step often leads to a murky broth that lacks clarity and brightness.
Underestimating Simmer Time
Rushing the simmering process is a common mistake that results in tough, chewy ribs. The key is low and slow—1.5 to 2 hours of gentle simmering is non-negotiable. I've seen people cut this time in half, thinking pressure cookers can replace traditional methods.
While pressure cookers work (see my shortcut tips), they still require proper timing. The long simmer breaks down collagen in the bones, creating that signature rich, gelatinous broth that makes bak kut teh so special.
Forgetting to Strain
Many home cooks skip straining the broth, leaving behind potato skins, lemongrass, and other solids that can make the final soup look unappetizing. I always strain through a fine-mesh sieve and press gently on the potatoes to extract their starches.
This thickens the broth slightly and removes any bitterness from overcooked aromatics. The result is a clear, fragrant broth that highlights all those beautiful flavors you've worked so hard to develop.
Over-Salting the Broth
It's easy to go overboard with soy sauce and salt, especially when you're tasting as you go. The dark soy sauce adds color and depth, but too much can make your soup taste unbalanced. I recommend adding the light soy sauce first, then adjusting with salt at the end.
Remember, you can always add more, but you can't take it out. Taste your broth before serving—it should be deeply flavorful but not overwhelmingly salty. A squeeze of lime at the end helps balance any over-saltiness beautifully. 💡
Nutrition facts
Frequently asked questions
Can I make bak kut teh in a pressure cooker?
For a faster version, use a pressure cooker: sear the ribs first, then add all ingredients (including 8 cups water) and cook on high pressure for 45 minutes. Release pressure naturally, then finish with lime and cilantro. The ribs will be tender, but the broth may be slightly thinner—reduce it on the stove if needed.
What if I can't find star anise?
Use 1 tsp anise seeds instead, but the flavor won't be identical. For a closer substitute, combine ½ tsp ground coriander and ½ tsp fennel seeds (lightly toasted). The key is balancing warmth—don't skip the cinnamon sticks, as they're essential for depth.
How do I know when the ribs are tender?
Ribs are done when they easily pull away from the bone with a fork and the meat is fork-tender. For precise timing, check after 1.5 hours—if they're still slightly chewy, simmer 30 more minutes. Never rush this step; the long cook time is what makes bak kut teh so special.
Can I make this soup vegetarian?
You can adapt it! Replace pork ribs with mushrooms (shiitake or king oyster) and tofu (firm, pressed). Use vegetable broth instead of water and add 1 tbsp soy sauce for umami. Keep the star anise, cinnamon, and lemongrass for aroma. The texture will differ, but the flavors remain rich and comforting.
Why does my broth look cloudy?
Cloudiness usually means impurities weren't removed. Always parboil the ribs first to rinse off blood, then sear them well. If the broth is still cloudy, strain it again through a cheesecloth-lined sieve for a crystal-clear result. A slight haze is normal, but murkiness often means the ribs weren't cleaned properly.
