Ingredients and steps on one page. Print it, or choose “Save as PDF” in the print dialog.
Sekai Gohan
Tahu Campur: Surabaya Fried Tofu and Beef Soup with Shrimp Paste

Ingredients
| Ingredient | Amount | Role |
|---|---|---|
| Beef brisket (daging sandung lamur sapi) | 1.1 lb (500 g) | Broth base and topping; a cut with fat gives the best broth |
| Water | 8⅓ cups (2 L) | Simmering the beef and the broth itself |
| Palm sugar (gula merah) | 1 oz (30 g) | Sweetness and dark colour |
| Sweet soy sauce (kecap manis) | 4 tbsp | Depth and brown colour |
| Galangal (lengkuas) | ⅜-inch (1 cm) piece | Backbone of the broth's aroma |
| Makrut lime leaves (daun jeruk) | 2 | Citrus aroma |
| Lemongrass (serai) | 1 stalk, bruised | Fresh, bright aroma |
| Garlic (bawang putih), for the paste | 3 cloves | Aromatic base |
| Shallots (bawang merah), for the paste | 5 | Sweetness and aroma |
| Fresh turmeric (kunyit), for the paste | ¾-inch (2 cm) piece | Yellow colour and earthy aroma |
| Black pepper (merica), for the paste | ½ tsp | Gentle heat |
| Cumin (jinten), for the paste | ½ tsp | Distinctive warm aroma |
| Salt (garam), for the paste | 1 tbsp | Base seasoning |
| Oil, for frying the paste | 1–2 tbsp, as a guide | Cooking the paste |
| Green bird's-eye chillies (cabe rawit hijau), for the sauce | 10 | Heat |
| Petis udang (fermented shrimp paste), for the sauce | 5 tbsp | Bittersweet, salty depth; the heart of the dish |
| Salt, for the sauce | ½ tsp | Sharpens the sauce |
| Warm water, for the sauce | 1 cup (250 ml) | Loosens the sauce |
| Large white tofu (tahu putih besar) | 3 blocks | Fried tofu |
| Yellow noodles (mie kuning) | 1.1 lb (500 g) | One of the two starches |
| Bean sprouts (tauge) | 3½ oz (100 g) | Crunch and lightness |
| Lontong (compressed rice cake) | 4 rolls | The other starch |
| Lettuce (selada) | as needed | Bed at the bottom of the bowl |
| Fried shallots (bawang merah goreng) | as needed | Toasty finish |
| Shrimp crackers or tapioca crackers (kerupuk udang / kanji) | as needed | Crisp contrast |
| Oil for deep-frying | as needed | Frying the tofu and lento |
| Grated cassava (singkong parut), for the lento | 10½ oz (300 g) | Body of the fritters |
| Spring onions, for the lento | 2, thinly sliced | Freshness and flecks of green |
| Cumin, for the lento | 1 tsp, dry-toasted | Aroma |
| Garlic, for the lento | 3 cloves | Aroma |
| Coriander seed, for the lento | ½ tsp, dry-toasted | Aroma |
| Kencur | 1¼-inch (3 cm) piece | Camphor-like aroma |
| Ground turmeric, for the lento | 1 tbsp | Colour and aroma |
| Salt, for the lento | to taste | Seasoning |
Steps
1Simmer the beef
Put the brisket and the water in a deep pot and bring it to a boil. Skim off the grey foam as it rises so the broth stays clear, then lower the heat to a gentle, steady bubble. If the water drops too far, top it up with boiling water rather than cold. As a rough guide, an ordinary pot takes 60 to 90 minutes, but judge by the meat, not the clock. The beef is ready when the fibres split apart under a firm press of your finger.
2Grind and fry the spice paste
Pound or blend the garlic, shallots, fresh turmeric, black pepper, cumin and salt for the paste into a smooth, thick paste. Heat the oil in a frying pan and fry the paste, stirring, until it darkens and smells cooked. Add the galangal, lemongrass and lime leaves and keep frying until they soften. The paste is done when the oil turns reddish-brown and the raw, powdery smell is gone.
3Season the broth
Scrape the fried paste and aromatics into the beef pot. Add the palm sugar and sweet soy sauce, bring the broth back to a boil and let it simmer so the beef takes on the seasoning. If the liquid has reduced too far, add hot water. The broth is ready when it is a deep, clear brown and tastes sweet first, with the spices behind it. Hold off on extra salt until everything else is done.
4Fry the tofu until half-dry
Wrap the tofu blocks in paper towels and press out the surface water. Slide them into hot oil and fry until they are setengah kering, half-dry: the surface is dry and lightly coloured, short of golden brown. Lift them onto a rack to drain, then cut them into bite-size pieces. The inside should still be pale and soft when you cut through.
Stop before goldenHalf-dry is the cue. A pale, dry skin soaks up broth and petis in the bowl; tofu fried to deep brown turns tough and stops absorbing.
Hot oilWet tofu spatters hard in hot oil. Dry it well, lower it in away from you, and keep children and pets away from the stove.
5Make the petis sauce
Steam or stir-fry the green chillies until they are soft and cooked through. Pound them with 3 tablespoons of the petis and the salt, then loosen the mixture with the warm water. Taste, and work in the rest of the petis a little at a time up to the full amount. Bring the sauce to a boil once in a small saucepan, then let it cool; the heat softens its flavour slightly. It is ready when it is dark, glossy and pourable but still thick.
Petis decides the saltBrands of petis vary widely in saltiness and sweetness. Start with 3 tablespoons and taste before adding the rest, because petis and sweet soy sauce together move the salt of the whole bowl more than anything else.
6Mix the lento
Dry-toast the cumin and coriander seed in a dry pan until fragrant. Pound them with the garlic, kencur and ground turmeric into a paste. Mix the paste into the grated cassava with the spring onions and salt to taste. If the cassava is very wet, squeeze out a little of the liquid. The mixture is right when a spoonful holds its shape when pressed.
7Shape and fry the lento
Shape the mixture into small, flat ovals, about the size of croquettes. Fry them in hot oil, turning once. Lift them out when the outside is crisp and golden brown, and drain them on paper. The centres should be tender while the shell crackles when tapped.
8Prepare the bowl components
Slice the lontong into rounds. Bring a pot of water to a boil and cook the bean sprouts until they are fully cooked rather than just scalded, then drain them. Lift the beef out of the broth and slice it. Shake the noodles loose and keep the broth at a simmer. Everything is ready when the sprouts have lost their raw snap and the broth is steaming.
9Assemble the bowls
Lay lettuce in the bottom of each bowl. Layer on the lontong, noodles, bean sprouts, fried tofu and beef in that order. Pour plenty of hot broth over everything, and do it just before serving. The bowl is ready when the broth rises around the layers and the top slices of beef sit just above it.
10Finish and mix at the table
Scatter fried shallots over the top and add the crackers and lento. Serve the petis sauce alongside, so each person can spoon in as much as they like. Just before eating, stir the whole bowl until the sauce dissolves into the broth. It is ready to eat when the broth has turned slightly cloudy and darker where the sauce has melted in.