Put beef shank (and optional tripe/tendon/lungs) into a pot of cold water. Bring to a boil and cook 5 minutes; skim off the scum. Drain and rinse the meat.
Transfer to a clean pot (or pressure cooker). Cover with fresh water. Pressure cooker: cook 35–45 minutes until fork-tender. Stovetop: simmer gently 1½–2 hours, topping up water as needed.
In a food processor, blend shallots, garlic, candlenuts, coriander seeds, cloves, nutmeg, and cumin until smooth. Add 2-3 tablespoons of water to make it easier to blend.
For the sambal: briefly boil bird’s eye chilies, then blend with a pinch of salt (and a little cooking water) until smooth. Set aside.
Once the beef is tender, remove it from the cooker. Slice it into cubes and set aside.
In a wok, heat some oil and sauté the blended spices until fragrant. Add the bay leaves, lime leaves, galangal, and lemongrass. Stir for 1–2 minutes to release their aroma.
Pour the coconut milk, reserved beef broth, and seasonings into the pot. Let the soup simmer gently for about 10 minutes while stirring. Remove and discard the bay leaves, lime leaves, galangal, and lemongrass, then strain the broth for a smooth finish.
To serve, place fried potatoes, tomato slices, beef cubes, and green onions into a bowl. Ladle in the hot broth, sprinkle with fried shallots, and enjoy with sambal, emping crackers, and a squeeze of fresh lime.
Video
Notes
Keep it creamy: After adding coconut milk, do not let the soup boil hard, gentle simmer only, or it may split.
Clear broth, richer flavor: Strain the broth after cooking the meat for a clean, silky finish.
Fried potatoes: Par-fry until just golden so they stay crisp when the hot broth hits.
Make-ahead: The broth tastes even better the next day. Reheat gently and add fresh toppings before serving.