To begin, blend shallots, garlic, candlenuts, ginger, galangal, coriander seeds, nutmeg, and cumin into a smooth paste. Add a splash of oil or water if needed to help blend. Proceed to sautéing.
Heat oil in a saucepan over medium heat. Sauté the spice paste for 5–7 minutes until fragrant and the paste turns golden. This builds the foundation of flavour. Move on to the beef.
Place beef cubes in a large pot with water. Add the sautéed spice paste, lemongrass, kaffir lime leaves, bay leaves, cinnamon, cloves, and cardamom. Bring to a boil, then reduce to a gentle simmer for 60–75 minutes or until the beef is tender. Skim off any foam.
In a separate pan, warm the coconut milk and evaporated milk together over low heat. Stir constantly to prevent curdling. Do not let it boil. Once warm, set aside for combining.
Once the beef is tender and the broth has reduced slightly, slowly pour in the warm milk mixture. Stir gently to combine. Continue cooking over low heat for 10 minutes. Avoid boiling to keep the soup smooth. Transition to seasoning.
Add salt and white pepper. Taste and adjust as needed. The balance should be savoury, slightly creamy, and aromatic. Move on to garnishing preparation.
While the soup simmers gently, slice tomatoes, spring onions, and lime wedges. Fry shallots until golden and crisp, if not using store bought. Ready the emping crackers. Proceed to final serving.
Ladle the soup into bowls. Add beef chunks, garnish with spring onions, tomatoes, lime, and fried shallots. Serve with emping crackers and steamed rice if desired. Presentation tip: Serve hot in deep bowls to keep warmth and aroma intact.