Soto Betawi
Indonesian

Soto Betawi

Betawi·Medium·50 min active + 2 hours 10 min resting

Jakarta-Betawi coconut beef soup — beef brisket and offal (tripe, intestine, lung optional) simmered in a creamy broth thickened with coconut milk and cow's milk, spiced with cinnamon, cardamom, cloves, and lemongrass. Served over rice with tomato, scallion, fried shallots, emping crackers, and a wedge of lime. Jakarta's signature soup, distinguished from other Indonesian soto by its creamy-rich coconut-milk broth and Arab-influenced cardamom-clove spicing.

Soto Betawi developed in 19th-century Batavia (colonial Jakarta) as a fusion of Indigenous Sundanese-Javanese soto tradition + Arab/Indian milk-based curries + Dutch-influenced cream usage. The Betawi (native Jakartan) Muslim community added the Middle-Eastern-style spicing (cardamom, cloves, cinnamon). The dish became famous citywide in the 20th century — 'Soto Betawi H. Husein' (the legendary Manggarai, South Jakarta vendor) is the most iconic and is credited with standardizing the modern recipe. Distinguished from Soto Madura/Soto Padang by its richness; Soto Betawi is the heaviest of all Indonesian sotos. Modern adaptations sometimes omit offal for international tourists, but the canonical version uses 'jeroan' (beef offal mix) for the deepest flavor.

Soto Betawi is the velvet curtain of Indonesian soups — the broth is creamy, sweet from coconut, with Middle-Eastern spice notes (cardamom, cinnamon, clove) you don't find elsewhere in Indonesian cooking. Take a spoonful: the texture is silky, the flavor layered. Then a piece of meltingly-tender beef brisket. Then a piece of tendon — jelly-soft from the long cook. Then a chunk of tripe (if you've kept it) — surprisingly mild and absorbent of the broth. The diced tomato adds acid; emping cracker adds salty-crunch. A squeeze of lime, a spoon of sambal, and the dish swings from rich-comfort to bright-spicy. The breakfast Jakartans wait in line for.

Three flavor cultures meet in soto Betawi: (1) Indonesian aromatic base (shallot + garlic + galangal + lemongrass), (2) Middle Eastern warm spices (cardamom + cloves + cinnamon — Indian-Arab influence via centuries of trade), (3) European-influenced dairy enrichment (cow's milk added with coconut milk — unique to Betawi version). The 90-min beef simmer extracts collagen; the coconut milk + dairy mix creates body without breaking (coconut fat stabilizes the milk emulsion). Adding dairy at LOW heat (not boiling) prevents curdling. The cardamom + clove must be added with the sauté so they bloom in oil before adding water.

Variations

Pak H. Husein style (canonical, with full offal mix); modern simplified (just brisket + coconut milk for tourists); 'Soto Betawi Susu' (extra-creamy, with more milk, modern variation); 'Soto Tangkar' (Betawi cousin — drier, with beef ribs, less broth); vegetarian impossibility, but a fish version using firm white fish + coconut milk approximates the texture (called 'soto ikan Betawi').

On the Palate

Where Soto Betawi sits in the Indonesian flavor cloud

HeatRichnessComplexityFermentFreshness
Cook to learn

Bloom the cardamom, clove and cinnamon in the sautéed spice paste before any liquid goes in, then add the milk and coconut milk off the boil — dairy that simmers gently thickens the broth, dairy that boils curdles it.

Ingredients

Serves 6

How it's made

8 steps · 50 min active + 2 hours 10 min waiting

  1. 1
    95 min

    Boil beef: in a stockpot combine 600g beef brisket + 200g beef tendon + 200g beef tripe (cleaned, optional) + 2L water + 1 tsp salt. Bring to boil; reduce; simmer 90 min until tender. Skim foam.

  2. 2
    5 min

    Make spice paste: in a blender combine 8 shallots + 6 garlic cloves + 4 candlenuts + 3cm fresh ginger + 2cm fresh turmeric + 1 tsp ground coriander + 1 tsp ground cumin. Blend with 3 tbsp water.

  3. 3
    10 min

    Sauté the spice paste in 3 tbsp coconut oil 8 min until fragrant and oil separates. Add 4 cardamom pods (crushed) + 4 cloves + 1 cinnamon stick + 3 kaffir lime leaves + 2 stalks lemongrass (smashed) + 1 star anise. Stir 2 min more.

    Watch out

    Fry the paste until the oil visibly splits back out and the raw-shallot smell is gone — that's the signal the base is cooked.

  4. 4
    32 min

    Add the spice mixture to the beef pot. Continue simmering 30 min — broth will deepen in flavor.

  5. 5
    22 min

    Add 400ml coconut milk (full-fat) + 200ml whole milk + 1 tbsp palm sugar + 1 tsp white pepper + adjust salt. Stir gently. Simmer (do not boil) 20 min more.

    Watch out

    Add the dairy only once the pot is off a hard boil; watch the surface tremble, never bubble, or it breaks.

  6. 6
    16 min

    Optional: add 100g potato cubes (peeled, 2cm); simmer 15 min until tender.

  7. 7
    5 min

    Remove beef + tripe + tendon; slice/chop into bite-sized pieces. Return to broth.

  8. 8
    5 min

    Serve: ladle broth + meat over a bowl of steamed white rice. Top with 1 chopped tomato + 1 tbsp fried shallots + 1 tbsp chopped scallion + 1 tbsp emping (melinjo crackers, crumbled) + lime wedge. Offer sambal + acar (pickled vegetables) on the side.

Dishes like this

More from Indonesian