Soto Bogor from Bogor, Indonesia: a clear-leaning yellow beef soup topped with sliced beef, boiled potato, tomato, sliced scallion and fried shallots, with lime on the side
Serves8 servings
CuisineIndonesian

Soto Bogor: Bogor's Yellow Beef and Coconut Milk Soup

Soto Bogor is the yellow beef and coconut milk soup of Bogor, Indonesia. How to fry the turmeric paste, keep the coconut milk smooth and replace candlenuts.

Level: Intermediate

Cooking flow

Cooking steps

STEP 11 / 7

Simmer the beef and keep the broth

Beef brisket simmering in a pot while the foam is skimmed off
Skim while the foam is grey and loose; the broth under it should stay clear

Put the beef and the 8⅓ cups (2 L) water in a large pot and bring to a boil. Skim off the grey foam as it rises, then lower the heat so the surface only trembles. Simmer until a skewer slides into the thickest part with no resistance and the meat pulls apart under your fingers. Lift the beef out, set it on a plate, and keep every drop of the broth in the pot; it is the base of the soup.

STEP 22 / 7

Grind the yellow paste

A bright yellow spice paste ground in a stone mortar
Grind until the paste is smooth, with no grains left

Toast the candlenuts in a dry pan, shaking it, until they smell nutty. Put them in the mortar or blender with the shallots, garlic, turmeric, peppercorns and coriander seed. Grind until smooth. If the blender stalls, add a spoonful of the beef broth rather than water so the flavour stays full. Grind until no grains remain and the paste is smooth.

STEP 33 / 7

Fry the paste with the aromatics

Yellow spice paste frying in oil with lemongrass and makrut lime leaves added
Reddish oil separating at the edges shows the paste has fried long enough for the leaves to go in

Heat the 5 tbsp oil in the soup pot, or a wide pan, over medium-low heat and add the paste. Stir often as it sizzles; it darkens and the raw, sharp smell of shallot and garlic fades. When the oil turns reddish and separates from the paste, add the salam leaves, lime leaves, ginger, galangal and lemongrass. Keep frying until the leaves wilt and the kitchen smells of citrus and spice. If the paste catches and scorches, it turns bitter, so lower the heat at the first dark edge.

The fried paste is the flavour

Do not hurry this step or cut the oil. Frying drives off the raw taste of the spices and moves their aroma into the fat, and that fat is what flavours the whole pot.

STEP 44 / 7

Pour in the broth

Beef broth poured into the fried spice paste, the yellow soup coming to a boil
The broth is still see-through gold at this point; it turns creamy only once the coconut milk goes in

Pour the reserved beef broth over the fried paste and aromatics. If the broth has cooked down a lot, top it up with water. Bring the pot to a boil and let it bubble so the spices steep into the liquid. It is ready when the broth turns an even soft gold and tastes of turmeric and lemongrass rather than of plain beef.

STEP 55 / 7

Finish with coconut milk over low heat

Coconut milk poured into the yellow soup and stirred gently over low heat
Pale ribbons of coconut milk should melt into the broth without curds or beads of oil

Turn the heat to low before anything else goes in. Add the coconut milk, sugar and mushroom bouillon, and stir slowly. Taste, then add the salt a little at a time up to 2 tsp, since the bouillon already brings salt. Let the soup cook gently, stirring, until it reduces slightly, then turn off the heat. The surface should stay smooth and creamy with no rolling boil.

Keep coconut milk calm

Once the coconut milk is in, keep the heat low. A hard, continuous boil splits it into oily beads and grainy curds.

STEP 66 / 7

Build the bowls

Hot yellow soup and beef ladled into a bowl over boiled potato and tomato
Keep the soup hot as you ladle it in, so it warms the cold tomato straight away

Boil the potatoes until a skewer passes through, then cut them into chunks; cut the tomatoes into wedges. Slice the beef against the grain into bite-size pieces. Lay potato and tomato in each bowl, set a few slices of beef on top, and ladle in the hot soup. Steam should rise off the bowl.

STEP 77 / 7

Garnish and bring to the table

Soto Bogor on the table with white rice, emping, lime and sambal
Rice stays on its own plate; each person spoons it in or eats it alongside

Scatter sliced scallions and fried shallots over each bowl. Set emping and lime halves alongside, with white rice or lontong on a separate plate. Squeeze the lime in just before eating, and eat while the soup is still steaming. The fried shallots should still crackle when they hit the hot broth.

0 / 0
Ingredients

Ingredients

1 / 1

Ingredients

Ingredient Amount Role
Beef brisket, in one piece (sandung lamur) 1 lb 2 oz (500 g) The meat, and the source of the broth
Water 8⅓ cups (2 L) Simmers the beef and becomes the soup
Red shallots (bawang merah) 8 Sweet base of the yellow paste
Garlic (bawang putih) 5 cloves Yellow paste
Candlenuts (kemiri) 3 Body and gentle thickness in the paste; toasted first
Fresh turmeric (kunyit) 1¼-inch (3 cm) piece The yellow colour and earthy scent
Black peppercorns (merica butiran) 1 tsp Heat in the paste
Coriander seed (ketumbar) 1 tsp Warm spice in the paste
Vegetable oil 5 tbsp Fries the paste
Salam leaves (daun salam) 3 Fried with the paste for aroma
Lemongrass (serai) 1 stalk, bruised Fresh citrus aroma
Ginger (jahe) ⅜-inch (1 cm) piece, bruised Warmth
Galangal (lengkuas) ⅜-inch (1 cm) piece, bruised Sharp, piney aroma
Makrut lime leaves (daun jeruk) 3 Citrus scent
Thick coconut milk (santan kental) 1 cup (250 ml) Roundness and body
Sugar 1 tsp Smooths the edges of the seasoning
Mushroom bouillon powder (kaldu jamur) 1 tbsp Savoury depth; contains salt
Salt 2 tsp Final seasoning, added in parts
Boiled potatoes (kentang rebus) as needed Laid in the bowl
Tomatoes (tomat) as needed Laid in the bowl, cut in wedges
Fried emping crackers (emping goreng) as needed Bitter crunch on the side
Fried shallots (bawang merah goreng) as needed Scattered on top
Scallions (daun bawang) as needed, thinly sliced Scattered on top
Limes (jeruk nipis) as needed Squeezed just before eating
0 / 0

Rain comes down over Bogor often enough that Indonesians call it kota hujan, the city of rain, and on a cool wet day the steam rising off a soto stall pulls people in from the street. What lands in front of them is a golden bowl. Slices of beef sit over boiled potato and tomato, with fried shallots and scallion on top and lime and a few bitter emping crackers on the side. In Bogor itself the dish is called soto kuning, the yellow soto. The broth tastes of turmeric, shallot and lemongrass, and the coconut milk added at the end makes it round and gently creamy without turning it heavy.

A Yellow Soup from the City of Rain

Soto is Indonesia's big family of spiced soups, and almost every region pours its own. Bogor's version is a beef soup whose yellow comes from fresh turmeric and spices ground into a paste and fried in oil, then loosened with the beef's own cooking broth and finished with coconut milk. That fried paste carries the whole aroma of the bowl. Bogor locals eat it with white rice or lontong (compressed rice cakes), and visitors who come to the city go looking for it.

Built at the counter

At a soto kuning stall the bowl is put together to order. Customers point at what they want, and offal is as common as plain meat. Fillings include beef, chicken, babat (tripe) and limpa, and many stalls add kikil, urat, empal and potato perkedel. Two people ordering soto kuning side by side can walk away with very different bowls.

Jalan Suryakencana, in the old centre of Bogor, is lined with soto kuning stalls, and on weekends people drive down from Jakarta to eat there. Most stalls sell from morning into lunch; some open only in the late afternoon. Each has its own touch. One stall run by Adam adds minyak samin (ghee) to the pot. Pak Yusuf's stall has been going since 1992, and Pak Salam's has drawn crowds for decades. Hours and locations shift over time, so check before you make the trip.

How a soto kuning bowl is ordered

Choose your fillings first, meat, tripe or other offal, then decide on rice or lontong alongside. Lime, fried shallots and emping come to the table so each person can sharpen and crunch their own bowl.

How it differs from its neighbours

Soto Bogor sits between two better-known cousins. Soto ayam is chicken with turmeric in a clear yellow broth. Soto betawi, from Jakarta, is beef in a broth made white with milk and coconut milk. Soto Bogor shares the coconut milk with soto betawi and can look like it at a glance, but its colour is turmeric yellow, and the coconut milk is measured to soften the broth rather than whiten it. East Java's rawon is another beef soup, and it goes in an entirely different direction with its black broth.

The one to watch for in Bogor is soto mie Bogor, which is a separate dish. It is a noodle soup with a beef and kikil broth, yellow noodles, rice vermicelli, cabbage, tomato and fried risol, finished with emping and sambal. Soto kuning has none of the noodles or risol; it is soup over potato and tomato, with rice served on the side.

Where soto came from

The wider soto family is usually traced to caudo, or jao to, a Chinese-Indonesian dish of offal simmered with herbs in the 19th century. Early soto was made with offal and spread through street vendors who carried their pots on shoulder poles, and over time each region worked out its own recipe and name. When Bogor's yellow, coconut-softened bowl first appeared is not settled. What is clear is how firmly it belongs to the city now, as one of the bowls people think of when they think of Indonesian cooking.


Ingredients (serves 8)

Soto Bogor ingredients laid out: beef brisket, red shallots, garlic, candlenuts, fresh turmeric, coriander seed, peppercorns, lemongrass, galangal, makrut lime leaves, salam leaves, coconut milk, potatoes, tomatoes, emping and limes
The paste ingredients go into the mortar; the leaves and roots go in whole later

The beef cooks once and gives you both the meat and the broth, so there is no separate stock. Keep the beef in one piece with its fat on; that fat carries the spice into the soup.

Measure the coconut milk from a can

Measure 1 cup (250 ml) of thick coconut milk from a regular can and stir the can well first so the cream and water are mixed. Small instant sachets have a different thickness, so count by volume from the can, never by number of sachets.

Allergen information

This soup contains beef and coconut. Candlenuts are tree nuts, and so are the macadamias or cashews used in their place. Emping is made from melinjo, not peanut. Check the labels on mushroom bouillon, fried shallots and crackers for other allergens and shared-facility statements.

Equipment

  • Large pot for simmering the beef and finishing the soup
  • Ladle and fine skimmer
  • Stone mortar and pestle, or a blender
  • Small dry frying pan for toasting the candlenuts
  • Wooden spatula
  • Bamboo skewer for testing the meat
  • Fine strainer, in case the soup splits
  • Deep soup bowls

Choosing and Substituting

The leaves and roots decide whether this tastes like Bogor. Salam leaves, makrut lime leaves, galangal and lemongrass are sold frozen at Southeast Asian grocers, and frozen ones work well; buy those before you think about swaps. Candlenuts and emping come from the same shops, or from stores that sell imported foods.

If you can't find Use What changes
Sandung lamur A block of fatty beef brisket or plate Close to the real thing. Thin slices fall apart in the pot
Fatty brisket Beef shank or chuck in one piece Works, but less fat means a leaner, less rich broth
Candlenuts Toasted macadamias or cashews Gives similar body and thickness; the flavour shifts. Never use them raw
Fresh turmeric Ground turmeric Brings back colour and aroma. Add a little at a time; too much turns the soup bitter
Galangal Ginger Hotter and less piney; the aroma moves away from Bogor
Salam leaves Bay leaf An emergency swap with a different scent
Makrut lime leaves Another citrus leaf A different citrus scent; keep it only as a stopgap
Mushroom bouillon Other granulated stock Salt content varies, so hold back the salt and season by tasting
Emping Leave it out The soup works with lime and fried shallots alone. Another fried cracker adds crunch but none of emping's bitter edge

Method

The beef goes on first, and its long, quiet simmer is your hands-off time: grind the paste and boil the potatoes while it cooks. Once the meat comes out, everything else moves quickly. Fry the paste, pour the broth back in, finish with coconut milk over low heat, then build the bowls.

When It Goes Wrong

What you see Why What to do
Beads of oil and grainy flecks on the soup The coconut milk boiled hard and split Turn the heat right down and stir gently. Strain the soup before ladling it into bowls. Turning up the heat will not bring it back
The beef is tough and chewy It came out of the pot before it was tender Return it to the simmering broth until a skewer slides in freely. Reduce the broth only after the meat is tender
The soup tastes bitter The paste scorched in step 3 Bitterness stays once it is there. Next time, fry over medium-low and keep the full 5 tbsp oil
The colour is pale Old or too little turmeric Use fresh, firm turmeric. Top up with a little ground turmeric, tasting as you go so it does not turn bitter
The soup is too salty Bouillon and salt went in all at once Taste after the bouillon and add salt in small amounts. If you overshoot, add a little water and warm it through gently

Serving, Variations and Storage

At the table

Soto Bogor is a meal in one bowl with rice beside it. White rice or lontong is the usual partner. Alongside, people add sambal for heat, kecap manis (sweet soy sauce) for sweetness and acar (quick pickles) for crunch, each to their own taste. Lime and emping stay at the table so every bowl can be adjusted as it is eaten.

Variations

Offal is common at Bogor stalls. Tripe and other organ meats take careful preparation at home, so follow the warning below before you add them.

Cooking offal for soto

Wash tripe or other beef offal well, then parboil it with spices such as ginger and lemongrass and discard the water. Repeat this 2 to 3 times. Then simmer it with salt and spices in the soup until the centre reaches 160°F (71°C).

  • Chicken. Stalls serve chicken soto kuning too. This recipe is written for beef only.
  • Ghee. One Bogor stall adds ghee (minyak samin) to its pot. It gives a buttery, toasty note under the spices.
  • Fried potatoes. Fry the potato instead of boiling it. It adds a toasty edge.
  • Coconut milk strength. Coconut milk varies from stall to stall and home to home. Less gives a lighter, clearer soup; more makes it rich and creamy.

Storage and reheating

Let the soup cool, then cover tightly and refrigerate promptly. Store the beef in the soup, but keep potatoes out, because they break down and cloud the broth. Boil and cut fresh potatoes when you serve. Reheat over low heat, stirring, until the whole pot comes to a full boil, then take it off the heat rather than letting the coconut milk keep boiling. Add a pinch of salt if it tastes flat after reheating.

Frequently Asked Questions

Can I use a pressure cooker for the beef?

Yes. It shortens the simmer, but a pressure cooker also reduces the broth, so top up with water in step 4 if the pot looks low. Let the pressure drop on its own before opening the lid. Test the meat with a skewer just as you would on the stove.

Can I halve the recipe?

The paste is counted in whole shallots, cloves and nuts, and halving it leaves you with half a candlenut and two and a half garlic cloves. Cook the full pot instead. The soup reheats well following the storage steps above, so leftovers become an easy second meal.

Is soto Bogor dairy-free and gluten-free?

The recipe has no dairy, wheat or egg; coconut milk is not dairy. Wheat or other allergens can come in through mushroom bouillon, fried shallots or crackers, so read those labels. Rice and lontong on the side keep the meal free of wheat.

Do I need both ginger and galangal?

Both go into the pot in this recipe. Ginger brings warmth, and galangal brings a sharper, piney note. If you cannot find galangal, ginger is a stopgap, as in the table above, but the aroma moves away from Bogor.

Sources