Quick Recipe Version (TL;DR)
Quick Ingredients
- 2 lb (900 g) beef shank, whole
- 2 lb (900 g) pork hock, cut crosswise
- 2 lb (900 g) beef bones (marrow/knuckle)
- 5.5 qt (5.2 L) water
- 6 lemongrass stalks, bruised and tied
- 1 large onion (12 oz), halved; 2-inch ginger, sliced
- 1 oz (30 g) rock sugar; 2 tsp fine salt
- 1/4 cup (60 ml) fish sauce, plus more to taste
- 2 tbsp Vietnamese shrimp paste (mam ruoc)
- 24 oz (680 g) thick round rice noodles (bun Bo Hue)
- Chili oil: 2/3 cup neutral oil, 2 tbsp annatto seeds, 3 stalks minced lemongrass (white parts), 3 minced shallots, 6 minced garlic cloves, 2 tbsp red pepper flakes, 2 tsp paprika, 1 tbsp fish sauce, 1 tsp sugar
- Garnishes: 3 cups shredded green cabbage, 1 cup Thai basil, cilantro/sawtooth herb, 4 scallions, 1 small red onion, 2 cups bean sprouts, 3 limes
Do This
- 1) Parboil bones, shank, and hock 5 minutes; rinse clean.
- 2) Simmer with 5.5 qt water, lemongrass, onion, ginger at 190–200°F for 2.5–3 hours; skim.
- 3) After 90 minutes, pull shank when tender; cool and slice. Keep hock and bones simmering.
- 4) Stir in rock sugar, 2 tsp salt, and 1/4 cup fish sauce.
- 5) Whisk 2 tbsp shrimp paste with 1 cup hot broth; let settle, strain clear liquid into pot; simmer 10 minutes.
- 6) Make chili oil: heat oil to 250°F, tint with annatto 2 minutes, strain; gently fry lemongrass, shallot, garlic, chili, paprika 8–10 minutes; season.
- 7) Boil noodles 10–12 minutes; assemble bowls with noodles, meats, hot broth, spooned chili oil, herbs, lime, and crunchy cabbage.
Why You’ll Love This Recipe
- Deep, lemongrass-forward broth with authentic shrimp paste complexity.
- Balanced heat from a fragrant, brick-red annatto chili oil you make from scratch.
- Layered textures: tender beef shank, succulent pork hock, chewy thick noodles, and crisp cabbage.
- Restaurant-quality results with approachable, step-by-step guidance.
Grocery List
- Produce: Lemongrass (9 stalks total), onion, ginger, garlic, shallots, scallions, Thai basil, cilantro/sawtooth herb, red onion, green cabbage, limes, optional bird’s eye chilies, bean sprouts.
- Dairy: None.
- Pantry: Beef bones, beef shank, pork hock, thick round rice noodles, Vietnamese fish sauce, shrimp paste (mam ruoc), neutral oil, annatto seeds, red pepper flakes, paprika, rock sugar (or granulated), fine sea salt, black pepper.
Full Ingredients
Broth
- 2 lb (900 g) beef shank, whole
- 2 lb (900 g) pork hock, cut into 2-inch cross-sections
- 2 lb (900 g) beef marrow/knuckle bones
- 5.5 qt (5.2 L) cold water
- 6 lemongrass stalks, trimmed, bruised, and tied into 2 bundles
- 1 large yellow onion (about 12 oz), halved
- 2-inch (5 cm) piece fresh ginger, sliced
- 1 oz (30 g) rock sugar (or 2 tbsp granulated sugar)
- 2 tsp fine sea salt, plus more to taste
- 1/4 cup (60 ml) fish sauce, plus more to taste
- 2 tbsp Vietnamese shrimp paste (mam ruoc)
Aromatic Chili Oil (Sa tế)
- 2/3 cup (160 ml) neutral oil (canola, rice bran, or grapeseed)
- 2 tbsp annatto seeds (or 2 tsp ground annatto)
- 3 lemongrass stalks, white parts only, very finely minced (about 1/2 cup)
- 3 medium shallots, minced (about 1/2 cup)
- 6 garlic cloves, minced
- 2 tbsp crushed red pepper flakes (add 1 more tbsp for extra spicy)
- 2 tsp sweet paprika
- 1 tbsp fish sauce
- 1 tsp sugar
- 1/2 tsp fine sea salt (optional, to taste)
Noodles and Garnishes
- 24 oz (680 g) thick round dried rice noodles (bun Bo Hue style)
- 3 cups (225 g) finely shredded green cabbage (or banana blossom if available)
- 1 small red onion, thinly sliced and rinsed
- 4 scallions, thinly sliced
- 1 cup Thai basil leaves
- 1 small bunch cilantro or sawtooth herb (ngo gai), roughly chopped
- 2 cups bean sprouts
- 3 limes, cut into wedges
- Fresh bird’s eye chilies, sliced (optional)
- Freshly ground black pepper, for serving

Step-by-Step Instructions
Step 1: Parboil and clean the meats
Add beef bones, beef shank, and pork hock to a large stockpot and cover with cold water by 2 inches. Add 1 tbsp salt and 1 tbsp white vinegar (optional for extra clarity). Bring to a rolling boil over high heat and boil for 5 minutes. Drain immediately, rinse all meats and bones under cold water, and scrub away any residue. Rinse the pot. This step ensures a clear, clean-tasting broth.
Step 2: Build the lemongrass broth
Return the cleaned bones, shank, and hock to the pot. Add 5.5 qt (5.2 L) cold water, the lemongrass bundles, onion, and ginger. Bring to a boil, then reduce to a gentle simmer at 190–200°F. Skim foam and fat as needed. After 30 minutes, add the rock sugar, 2 tsp salt, and 2 tbsp fish sauce. Continue simmering partially covered.
Step 3: Pull and slice the shank; continue simmering bones
At about 90 minutes, test the beef shank; when fork-tender (internal temp around 195°F) but not falling apart, remove it. Cool 15–20 minutes, then slice across the grain into 1/4-inch pieces. Keep the bones and pork hock simmering for a total of 2.5–3 hours to extract maximum flavor and tenderness.
Step 4: Season with shrimp paste (mam ruoc)
In a bowl, whisk 2 tbsp shrimp paste with 1 cup hot broth. Let stand 5 minutes so sediment settles. Pour the clear purple liquid from the top through a fine strainer back into the pot, discarding gritty residue. Add the remaining 2 tbsp fish sauce (or to taste). Simmer 10 minutes to mellow and integrate the funky-salty depth that defines Bun Bo Hue.
Step 5: Make the aromatic annatto chili oil
Warm 2/3 cup oil in a small saucepan to 250°F over medium heat. Add annatto seeds and swirl for 2 minutes until the oil turns deep red-orange; strain out seeds. Return the colored oil to the pan and reduce heat to low. Add minced lemongrass, shallots, and garlic; cook gently 8–10 minutes, stirring, until fragrant and lightly golden, not browned. Stir in red pepper flakes and paprika for 30 seconds, then season with 1 tbsp fish sauce and 1 tsp sugar. Remove from heat and set aside.
Step 6: Cook the noodles
Bring a large pot with at least 4 qt water to a full boil. Add 24 oz (680 g) thick round rice noodles; stir to prevent sticking. Boil 10–12 minutes until chewy-tender. Drain and rinse briefly under cool water to stop cooking and remove excess starch. Keep warm by dipping in hot water for a few seconds right before serving.
Step 7: Prep garnishes and final broth seasoning
Thinly slice red onion and soak in cold water 10 minutes to mellow. Shred cabbage, slice scallions, and prep herbs, bean sprouts, and lime wedges. Fish out and discard lemongrass, onion, and ginger from the broth. Taste and adjust with more fish sauce or salt as needed. The broth should be savory, lightly sweet, and lemongrass-forward with a subtle fermented backbone.
Step 8: Assemble and serve
Divide noodles among 6 warm bowls. Top with sliced beef shank and pieces of pork hock. Ladle 2 cups of boiling-hot broth into each bowl. Spoon 1–2 tsp of the aromatic chili oil over the surface so ruby droplets float across. Finish with red onion, scallions, herbs, a squeeze of lime, and plenty of crunchy cabbage. Serve extra chili oil, lime, and fish sauce at the table.
Pro Tips
- Keep the simmer lazy (190–200°F). A rolling boil clouds the broth and toughens meat.
- Always dilute and strain shrimp paste before adding. This preserves clarity and prevents grit.
- Pull the shank as soon as it is sliceable; overcooking turns it shreddy instead of pleasantly chewy.
- Cook noodles separately and store dry; only dip in hot water to rewarm right before serving to avoid bloating.
- Make chili oil a day ahead; the aromatics bloom and the heat evens out overnight.
Variations
- Classic add-ins: Sliced Vietnamese pork roll (cha lua) or cubes of congealed pork blood for a traditional Hue experience.
- Meat swap: Use 2 lb oxtail in place of bones for a richer, gelatinous broth; extend simmer to 3.5 hours.
- Extra spicy: Stir 1–2 tbsp chili oil directly into the pot near the end, and offer more at the table.
Storage & Make-Ahead
Broth keeps 4 days refrigerated or 3 months frozen (cool quickly and store without noodles). Chili oil keeps 2–3 weeks in a sealed jar in the fridge. Cooked noodles are best the day of; if storing, toss with a little oil and refrigerate up to 24 hours, then reheat by dipping in boiling water for 20–30 seconds. Slice meats up to 2 days ahead and store in broth to keep moist.
Nutrition (per serving)
Approximate: 750 calories; 45 g protein; 85 g carbohydrates; 25 g fat; 5 g saturated fat; 1650 mg sodium; 3 g fiber. Values will vary with seasoning and garnishes.
