Sweet, Sticky, Stupid Easy
This is the recipe that converts tofu sceptics. Cubes of pork shoulder and slabs of golden tofu, all swimming in a dark, sticky soy-and-sugar glaze. The tofu soaks up that sauce like a sponge. The meat brings the richness. Together, they’re better than either alone.
Nothing fancy. Nothing sacred. Just good food.
Ingredients
The Protein (3:1 ratio)
- 1 pack pork shoulder (400-500g), cut into bite-sized chunks
- 2 packs firm tofu (400g each), sliced into rectangles about 1cm thick
- 1 pack smoked tofu (optional swap for one of the firm packs — adds a gorgeous depth)
The Aromatics
- 2 large onions, sliced into half-moons
- 6 cloves garlic, sliced (not crushed — you want them to melt into the sauce)
- Thumb of ginger, grated (optional but brilliant)
The Sauce
- 4 tbsp dark soy sauce
- 2 tbsp light soy sauce
- 3 tbsp brown sugar (demerara or muscovado — whatever’s in the cupboard)
- 1 tbsp rice vinegar or splash of lime juice
- 200ml water or stock
The Variations (pick what you fancy)
- 2 sweet peppers, sliced thick
- 1-2 fresh chillies, sliced (or a tsp of chilli flakes)
- 2 star anise
- 1 tsp Chinese five spice
- 1 tbsp fish sauce (instead of some of the soy — adds funk)
To Serve
- Jasmine rice or basmati (cook a massive batch — you know why)
- Spring onions, sliced
- Sesame seeds
Instructions
1. Press and Prep the Tofu

Once pressed, slice the tofu into rectangles — about 1cm thick, 3-4cm long. Think chunky dominos. Pat dry with kitchen paper.
2. Brown the Tofu
Heat 2 tbsp neutral oil (vegetable, sunflower, whatever) in your biggest pan or wok over medium-high heat. Lay the tofu pieces in a single layer — don’t crowd the pan, do it in batches if needed.
Leave them alone for 3-4 minutes until golden on the bottom. Flip. Another 3 minutes. You want a proper golden crust. Remove and set aside.
3. Brown the Pork
Same pan, bit more oil if needed. Add the pork pieces in a single layer. Season with salt and pepper. Let them sit and brown — 4-5 minutes without touching. Flip and brown the other side. You want colour, not grey steamed meat.
Remove the pork and set aside with the tofu.
4. Build the Base
Turn heat to medium. Add the onions to the pan. Cook for 8-10 minutes until soft and starting to caramelize. Don’t rush this — the sweetness of slow-cooked onions is half the dish.
Add the garlic and ginger. Cook 1 minute. If you’re using star anise or five spice, add them now.
5. The Sauce and the Slow Cook

Mix the soy sauces, sugar, vinegar, and water together in a jug. Pour into the pan. Bring to a simmer.
Add the pork back in. Cover and cook on low for 20 minutes — the pork needs to get tender.
Add the tofu and any peppers or chillies. Cook uncovered for another 10-15 minutes, turning everything gently now and then. The sauce should reduce to a dark, sticky glaze that coats everything.

6. Taste and Adjust
This is the important bit. Taste it. Too sweet? Splash more soy sauce. Not sweet enough? More sugar. Needs funk? Dash of fish sauce. Needs heat? Chilli flakes. Flat? Squeeze of lime.
There’s no “correct” here. It’s done when it tastes right to you.
7. Serve
Pile it over jasmine rice. Scatter spring onions and sesame seeds on top. Eat.
Be Kind to Future Self
This makes 6 big portions. Here’s the plan:
- Eat 2 tonight — you’ve earned it
- Fridge 2 — lunch sorted for the next two days
- Freeze 2 — into containers, sauce and all. Defrosts beautifully. Reheat in a pan with a splash of water until piping hot.
The tofu actually gets better after freezing — it develops a chewier, meatier texture. Science is on your side.
Make It Different
- Crispy version: After step 6, spread everything on a baking tray and blast under the grill for 5 minutes. The edges go crispy and caramelized.
- Noodle bowl: Skip the rice. Serve over thick udon noodles with a handful of beansprouts and fresh chilli.
- Coconut twist: Replace half the water with coconut milk. Different vibe, equally good.
- Use beef: Swap pork for braising steak. Cut into strips. Same method, add 10 minutes to the slow cook.
Nothing is sacred. Use what you’ve got.