Ngoh Hiang
Ngoh hiang means "five fragrances" in Hokkien — the five spices that define the dish.
The five are: star anise, cloves, cinnamon, Sichuan pepper, and fennel — sometimes with sand ginger added. They are the Hokkien gift to the Chinese kitchen, blended into a single powder that gives ngoh hiang its unmistakable scent.
The Hokkien and Teochew versions of ngoh hiang have one important difference: yam. The Teochew version uses cubed yam (taro) inside the filling, which gives a fluffy, slightly nutty texture. The Hokkien version skips the yam and relies more on water chestnut for crunch. Both are correct. Both are heritage. In Singapore, you'll see both — and many grandmothers have crossed the line, mixing the two.
In our family, ngoh hiang appears on the table during Chinese New Year, weddings, and major birthdays. It is a celebration food, but also the kind you can find at the corner economy rice stall any Tuesday lunchtime. That is the beauty of Singapore — celebration foods become daily food, daily food becomes heritage.
I am giving you the Hokkien version here (no yam). The Teochew yam-version notes are at the end so you can choose.
🛒Ingredients
Filling, seasoning powder, beancurd-skin wrappers, dipping sauce. Five-spice powder does the work.
For the Filling makes ~12 rolls
| Pork belly, finely minced | 500 g | Use minced pork belly, not lean — fat carries flavour. 70/30 fat-to-lean. |
| Fresh prawns, peeled, finely chopped | 200 g | |
| Fish paste | 50 g | Optional but recommended; binds the meat. Get from any fishball stall. |
| Water chestnuts | 100 g | Peeled, finely diced — not minced. Keep granular for crunch. |
| Carrot | 60 g | Finely diced. |
| Spring onions | 3 stalks | Finely chopped. |
| Garlic | 4 cloves | Minced. |
| Egg | 1 | Beaten. |
Seasoning Powder
| Five-spice powder | 1.5 tsp | |
| Ground white pepper | ½ tsp | |
| Salt | 1 tsp | |
| Sugar | 2 tsp | |
| Light soy sauce | 1 tbsp | |
| Sesame oil | 1 tbsp | |
| ti po (sole fish powder) | 1 tsp | Optional but adds heritage depth. |
| Tapioca flour | 2 tbsp | Binder. |
| Rice flour | 1 tbsp |
For Wrapping & Frying
| Dried beancurd skin sheets | ~2 large | Lower-salt variety. Cut into ~12 cm × 18 cm pieces — enough for 12 rolls. |
| Egg white, beaten | 1 | For sealing. |
| Cornflour | for dusting | Before frying. |
| Neutral oil | for frying | ~4 cm depth in a wok. |
Sweet Chilli Dipping Sauce
| Lingham (or similar) sweet chilli | 4 tbsp | |
| Dark soy sauce | 1 tbsp | |
| Sesame oil | 1 tsp |
🌶️Shifu's Lift
choose one path — see "Shifu's Secret" chapter for the philosophy- Old-school path: ¼ tsp MSG mixed into seasoning
- Modern hawker path: ½ tsp chicken stock powder
- Heritage purist path: Already covered by sole fish powder above
👨🍳Method
Five stages — build, wrap, steam, cool, fry. The wrap can be made days ahead.
Build the Filling
Place minced pork belly in a large bowl. Add seasoning powder ingredients (everything except water chestnuts and carrot). Mix in one direction — clockwise or counter-clockwise, but consistently — for 5 full minutes with chopsticks or hand. This develops the protein and gives the bouncy texture.
The filling should turn slightly pale, slightly tacky, and hold its shape when pinched.
Now add prawns, fish paste, beaten egg. Mix another 2 minutes.
Finally, fold in water chestnuts, carrot, spring onions. Do not over-mix at this stage — water chestnuts will release water and turn the filling soggy.
Cover and rest in the fridge 30 minutes.
Prep the Beancurd Skin
Dampen a clean kitchen cloth. Wipe both sides of each beancurd sheet to remove excess salt and soften slightly. Do not soak. If too wet, the skin tears.
Cut into 12 cm × 18 cm rectangles. You should have 12 pieces.
Roll
Place a beancurd skin on a board, long side facing you. Spoon about 2 heaping tablespoons of filling along the bottom edge, leaving 1 cm on each side. Shape into a 12 cm-long sausage.
Fold both short sides inward over the filling. Then roll up tightly from the bottom, like a spring roll. Seal the final edge with beaten egg white.
Place seam-side down on a lightly oiled plate. Repeat for all 12.
Steam
Set up a steamer with rapidly boiling water. Place rolls seam-side down with 2 cm gaps between them. Steam over medium heat for 12 minutes.
Remove. Let cool completely on a wire rack.
Pause point: at this stage, you can refrigerate (3 days) or freeze (3 months) the steamed rolls. To use later: thaw, dust, fry.
Fry
Heat 4 cm of neutral oil in a wok to 170°C.
Lightly dust each roll with cornflour — dust, not coat. This gives the iconic crispy skin and prevents oil splatter.
Fry 2–3 rolls at a time for 2.5 minutes, turning once, until golden brown.
Drain on a wire rack (not paper towel — paper traps steam and softens the bottom).
Cool 3 minutes. Slice into 2 cm pieces with kitchen scissors. Serve with sweet chilli dip.
🎯The Three Tips
Heritage. Master's. Mistake.
🏛 Heritage Note
Hokkien vs Teochew
For the Teochew version: replace 100 g of the pork belly with 150 g cubed steamed yam (taro). The yam adds a creamy, almost-mashed-potato texture inside the roll. Both are valid — neither is more authentic than the other.
In Singapore, the lines have blurred. A Hokkien grandmother who married a Teochew uncle will probably make a hybrid: meat, prawn, yam, and water chestnut. That's not "wrong." That's how heritage actually works in a city like Singapore — through marriage, migration, and the kitchen table.
👨🍳 Master's Tip
Mix in One Direction
The single technique that separates a bouncy, juicy ngoh hiang from a crumbly, dry one is mixing the filling in one direction for 5 full minutes. This is the same principle used in fishball-making. The protein strands align, the meat becomes "elastic" — qq (Teochew for the bouncy chew), not tough.
How do you know it's done? Pick up a small ball of filling and throw it back into the bowl. If it lands with a slap and holds together, you're done. If it splatters, mix more.
⚠ Common Mistake
The Soggy Bottom
Two mistakes cause soggy ngoh hiang:
- Steaming directly on a flat plate without lifting it. Water condenses underneath, mushy bottom. Fix: use a steaming tray with holes, or banana leaves with gaps between rolls.
- Frying immediately after steaming. Rolls are too wet, oil splatters, skin doesn't crisp. Fix: cool completely (at least 30 min) before frying. Even better — refrigerate overnight.
📈 Scaling for Hawker Service
For a stall selling ngoh hiang as a side
- Batch prep weekly: Make 200 rolls on a Sunday, steam, freeze in trays of 50. Daily, thaw 50 in the morning, fry to order.
- Double-fry for crispness: Fry once at 160°C for 2 minutes (par-fry, hold). Re-fry to order at 180°C for 60 seconds. This gives lasting crispness during a queue rush.
- Beancurd skin sourcing: Get the lower-salt variety from Chinatown Complex or Sheng Siong's specialty Asian section. Bulk packs save 20%.
- Cost (Singapore 2026): Per roll ~SGD 0.45. Sells SGD 1.50–2.00 per piece, or SGD 5–8 per plate of 4. Margin: ~70%.
A roll cut by scissors, dipped in sweet sauce, eaten standing up on Chinese New Year while the children fight over the last piece — this is ngoh hiang. Festival food, hawker food, mother's-table food, all in one.