A rich, creamy Jakarta-style beef soup with coconut milk and regular milk, loaded with tender beef, potatoes, and tomatoes, topped with fried shallots and emping crackers.
Ingredients
500g beef brisket, cubed
200g beef tripe, cleaned and cubed (optional)
400ml coconut milk
200ml whole milk
2 tomatoes, quartered
2 potatoes, cubed
8 shallots
5 cloves garlic
3 candlenuts (kemiri)
2 cm ginger
2 cm galangal
2 stalks lemongrass, bruised
4 kaffir lime leaves
1 cinnamon stick
3 cloves
1 tsp white pepper
Salt
Fried shallots
Emping crackers
Lime wedges
Instructions
1Grind shallots, garlic, candlenuts, ginger, and white pepper into a paste.
2Boil beef (and tripe if using) in water for 10 minutes. Drain and rinse. Return to pot with fresh water and simmer for 1 hour.
3In a separate pan, sauté the spice paste with galangal, lemongrass, kaffir lime leaves, cinnamon, and cloves until fragrant.
4Add the sautéed spice paste to the beef pot. Add potatoes and cook 15 minutes.
5Pour in coconut milk and whole milk. Add tomatoes. Simmer gently for 15 minutes (do not boil vigorously or milk will curdle).
6Season with salt. Serve in bowls topped with fried shallots, emping crackers, and lime wedges.
Did You Know?
Soto Betawi is one of the only Indonesian sotos that uses cow's milk in addition to coconut milk, a heritage from the Dutch colonial era when dairy was introduced to Jakarta.