Jakarta Beef Soup with Coconut Milk (Soto Betawi)
Soto Betawi Say it: SOH-toh beh-TAH-wee
Soto Betawi is Jakarta’s beloved creamy beef soup, sold from morning stalls and eaten for breakfast or lunch. Beef simmers with lemongrass, lime leaves and warm spices until tender, then coconut milk and whole milk turn the broth silky and gently sweet. Tomato, potato, scallions and crisp fried shallots add fresh and crunchy contrast, while lime and sambal keep each bowl bright and lively. It is comforting, aromatic and unmistakably Indonesian.
Jakarta Beef Soup with Coconut Milk (Soto Betawi)
Soto Betawi
Pronounced SOH-toh beh-TAH-wee
- Serves
- 4
- Prep
- 25 min
- Cook
- 1 hr 30 min
- Total
- 1 hr 55 min
- Level
- Medium
Also egg-free.
Allergens: contains gluten, milk, nuts, soy. Check labels on packaged ingredients.
Ingredients
Amounts are scaled. Cooking times and pan sizes stay the same.
Broth and beef
Spice paste
Coconut milk and finish
To serve
Method
In a heavy pot, combine the beef, water, bay leaves, lemongrass, kaffir lime leaves, cinnamon, cloves and star anise. Bring to a boil, skim off the foam, then lower the heat, cover and simmer for 60–75 minutes, until the beef is fork-tender.
While the beef simmers, make the spice paste: blend or grind the shallots, garlic, candlenuts, ginger, galangal, coriander, cumin, nutmeg, white pepper and salt until smooth, adding a splash of water only if needed.
Heat the oil in a skillet over medium heat and fry the spice paste for 5–7 minutes, stirring often, until fragrant, the moisture has evaporated and the paste is deep golden.
Stir the fried spice paste into the beef broth and simmer for 10 minutes. Add the potato wedges and cook for 12–15 minutes, until tender but not falling apart.
Lower the heat, stir in the coconut milk and whole milk, and heat gently for 5 minutes until steam rises; do not let it boil hard. Stir in the kecap manis and taste for salt.
Place tomato wedges in serving bowls, ladle the hot soup with beef and potatoes over them, then top with scallions and fried shallots. Serve with lime wedges and sambal oelek on the side.
Regional variants
Some Jakarta cooks add beef offal such as tripe or lung for a richer soto Betawi jeroan. It is also commonly served with ketupat or steamed rice instead of potatoes.
Cook's notes
- Keep the coconut milk and dairy mixture at a gentle simmer; a hard boil can make it split.
- Skim the broth well during the first simmer for a cleaner, richer-tasting soup.
- Candlenuts give the traditional creamy body; macadamia nuts are the closest easy substitute.
Serve with
Steamed rice or ketupat, lime wedges, sambal oelek and sweet iced tea.
Make ahead and storage
Cool and refrigerate for up to 3 days; reheat gently without boiling and keep the fresh toppings separate.





