Bakso - Indonesian Meatball Soup (Halal)
Authentic Indonesian beef meatball soup with aromatic broth, springy meatballs, and fresh vegetables. A halal-adapted version of Indonesia's beloved street food comfort dish.
Bakso is Indonesia's beloved street food—a comforting bowl of tender beef meatballs swimming in a fragrant, savory broth, served with springy noodles and crisp vegetables. This halal-adapted version honors the dish's Chinese-Indonesian heritage while ensuring every ingredient meets Islamic dietary guidelines.
Walk through any Indonesian city and you'll encounter bakso vendors at nearly every corner, their mobile carts or humble stalls sending aromatic steam into the air. The dish traces its roots to Chinese immigrants who brought their tradition of meat-based meatballs to the archipelago, where it evolved into a uniquely Indonesian comfort food. The name itself comes from the Hokkien word "bak-so" (肉酥), meaning "fluffy meat" or "minced meat," reflecting its Chinese heritage. Yet over generations, bakso has been thoroughly embraced and adapted by Indonesian cooks, becoming as essential to the nation's culinary identity as nasi goreng or satay.
What distinguishes authentic bakso from other meatball soups worldwide is its distinctive texture—firm yet springy, with a satisfying bounce that comes from the careful incorporation of tapioca starch and the vigorous mixing of the meat paste. Traditional recipes often call for pork, but in Muslim-majority Indonesia, beef and chicken have become the proteins of choice. The broth, too, is crucial: a deeply flavored stock simmered for hours with beef bones, aromatics like ginger and lemongrass, and warm spices including star anise and cinnamon. This aromatic base transforms a simple bowl into a soul-warming meal that appeals across all social classes, from students grabbing a quick lunch to families gathering for dinner.
A Dish of Many Variations
While the basic concept remains consistent—meatballs in broth—regional variations abound throughout Indonesia. In Java, you might find bakso urat, which includes tendons for extra texture, or bakso beranak ("pregnant meatballs"), where smaller meatballs are nested inside larger ones. In East Java, bakso Malang includes fried wontons, tofu, and sometimes a soft-boiled egg. Street vendors often personalize their recipes, adjusting the spice blend or offering different meatball sizes and compositions to build customer loyalty.
The serving ritual is equally important. Vendors typically arrange raw noodles and vegetables in a bowl, ladle piping hot broth over them to cook the ingredients, then add the meatballs and garnishes. Diners customize their bowls with condiments: sambal for heat, kecap manis (sweet soy sauce) for sweetness, lime juice for brightness, and fried shallots for crunch. This interactive element makes eating bakso a personalized experience, with each person tailoring the flavor profile to their preference.
Beyond its delicious taste, bakso holds cultural significance as a social equalizer. Unlike many dishes associated with specific regions or ethnic groups, bakso is universally loved across Indonesia's diverse population. It's equally at home at a street cart where a bowl costs less than a dollar, or at upscale restaurants where premium ingredients elevate the humble dish. This accessibility and adaptability have helped bakso become one of Indonesia's most iconic foods, alongside satay and soto.
Halal Adaptation Notes
Traditional Chinese versions of this meatball soup were made with pork, and some contemporary Indonesian recipes still include pork or use commercial stocks that may contain non-halal ingredients. This recipe ensures complete halal compliance by using certified halal beef for both the meatballs and the stock, avoiding any questionable additives. All seasonings and garnishes—from the soy sauce to the sambal—should be verified as halal-certified, especially if using commercial products. When purchasing beef, look for halal certification to ensure proper slaughter methods according to Islamic law. Similarly, select aluminum-free baking powder and other processed ingredients from trusted halal sources to maintain the dish's religious permissibility from start to finish.
Recipe Snapshot
| Yield | 6 servings |
|---|---|
| Prep time | 45 minutes |
| Cook/Bake time | 3 hours 30 minutes |
| Total time | 4 hours 15 minutes |
| Cuisine | Indonesian |
Ingredients
This recipe builds flavor in two stages: first, a rich bone broth simmered for hours to extract maximum depth, and second, tender meatballs with the characteristic springy texture that defines great bakso.
For the Broth
|
Beef bones (preferably marrow bones)
2 pounds (900g)
|
MUSHBOOH |
|
Garlic
6 cloves, smashed
|
HALAL |
|
Ginger
2-inch piece, sliced
|
HALAL |
![]() |
Celery stalks
2 stalks with leaves
|
HALAL |
|
Spring onions
4 stalks, cut into 2-inch pieces
|
HALAL |
|
Lemongrass
2 stalks, bruised
|
HALAL |
|
Star anise
2 whole
|
HALAL |
|
Cinnamon
1 stick (3 inches)
|
HALAL |
|
Water
12 cups (3 liters)
|
HALAL |
|
Salt
2 teaspoons, or to taste
|
HALAL |
|
Sugar
1 teaspoon
|
HALAL |
|
White pepper
1 teaspoon ground
|
HALAL |
For the Meatballs
![]() |
Ground beef (halal-certified, lean)
1.5 pounds (700g), 90% lean
|
MUSHBOOH |
|
Tapioca starch (or cornstarch)
½ cup (60g)
|
HALAL |
|
Garlic
4 cloves, minced finely
|
HALAL |
|
Shallots
3 shallots, minced finely
|
HALAL |
|
Aluminum-free baking powder
½ teaspoon
|
HALAL |
|
Salt
1½ teaspoons
|
HALAL |
|
White pepper
1 teaspoon ground
|
HALAL |
![]() |
Ice water
⅓ cup (80ml)
|
HALAL |
For Serving
|
Egg noodles (halal-certified)
12 oz (340g), cooked
|
HALAL |
|
Bok choy or Chinese cabbage
2 cups, roughly chopped
|
HALAL |
|
Fried shallots
For garnish
|
HALAL |
|
Sambal (chili paste)
To taste
|
HALAL |
|
Sweet soy sauce (kecap manis)
To taste
|
HALAL |
![]() |
Lime wedges
For serving
|
HALAL |
Method
- Prepare the broth: In a large stockpot, combine beef bones and enough water to cover them. Bring to a boil over high heat and boil for 5 minutes. Discard this water (this removes impurities and results in a clearer broth). Rinse the bones under cold water and return them to the cleaned pot.
- Simmer the stock: Add 12 cups of fresh water, garlic, ginger, celery, spring onions, lemongrass, star anise, and cinnamon stick to the pot. Bring to a boil, then reduce heat to low and simmer gently for 3 hours, skimming off any foam that rises to the surface. The broth should be aromatic and deeply flavored. Strain the broth through a fine-mesh sieve, discarding the solids. Season with salt, sugar, and white pepper. Keep warm over low heat.
- Make the meatball mixture: While the broth simmers, prepare the meatballs. In a food processor, combine ground beef, tapioca starch, minced garlic, minced shallots, baking powder, salt, and white pepper. Pulse several times to combine. With the processor running, slowly add the ice water through the feed tube. Process for 1 full minute until the mixture is completely smooth, homogeneous, and slightly sticky. The vigorous mixing develops the meat proteins, creating that signature bouncy texture. If you don't have a food processor, you can knead the mixture by hand for 10-15 minutes, but the texture won't be quite as uniform.
- Shape the meatballs: Fill a large bowl with cold water and keep it nearby. Wet your hands with the cold water (this prevents sticking). Scoop about 2 tablespoons of the meat mixture into your palm. Close your fist and squeeze the mixture upward through the circle formed by your thumb and index finger, creating a smooth ball. Use a spoon to scoop it off and drop it into a plate. Repeat until all the mixture is used—you should get about 24-30 meatballs depending on size. Keep wetting your hands as needed to prevent sticking.
- Cook the meatballs: Bring a separate large pot of water to a gentle boil. Carefully drop the meatballs into the boiling water, working in batches if necessary to avoid overcrowding. The meatballs will sink initially, then float to the surface when cooked through (about 3-5 minutes). Once they float, let them cook for an additional 2 minutes to ensure they're fully cooked. Remove with a slotted spoon and transfer to the warm broth. If not serving immediately, you can store the cooked meatballs in the refrigerator and reheat them gently in the broth before serving.
- Prepare the noodles and vegetables: Cook the egg noodles according to package instructions until just tender. Drain and rinse briefly under cold water to stop the cooking. Blanch the bok choy or Chinese cabbage in boiling water for 1-2 minutes until just wilted but still bright green. Drain well.
- Assemble and serve: Divide the cooked noodles among serving bowls. Top with blanched vegetables and 4-5 meatballs per bowl. Ladle the hot, aromatic broth over everything, filling each bowl generously. The heat from the broth will warm the noodles and vegetables. Garnish with fried shallots and sliced spring onions. Serve immediately with sambal, sweet soy sauce, and lime wedges on the side, allowing each diner to customize their bowl to taste.
Tips & Variations
- Ice water is essential: The cold water keeps the meat mixture from warming up during processing, which helps maintain the proper texture. If the mixture gets too warm, the fat will separate and the meatballs won't have the right bounce.
- Don't skip the blanching step: Boiling the bones initially and discarding that water removes blood and impurities, resulting in a much clearer, cleaner-tasting broth. This extra step makes a noticeable difference in the final dish.
- Make-ahead friendly: Both the broth and the cooked meatballs can be made 1-2 days in advance. Store them separately in the refrigerator. The broth may develop a layer of fat on top when chilled—you can remove this for a lighter soup, or leave it for extra richness.
- Texture variations: For bakso urat, add finely chopped beef tendons to the meatball mixture. For bakso beranak ("pregnant meatballs"), form small meatballs and encase them inside larger ones before cooking. Some cooks also add a small amount of finely chopped fresh cilantro to the meatball mixture for extra flavor.
- Chicken option: You can substitute ground chicken for the beef, or use a 50/50 mixture of beef and chicken. Chicken meatballs will be slightly lighter in color and flavor but equally delicious.
- Freezing tip: Uncooked meatballs freeze beautifully. Arrange them on a parchment-lined tray, freeze until solid, then transfer to freezer bags. Cook directly from frozen, adding 1-2 extra minutes to the cooking time.
- Serving additions: Traditional bakso carts often offer fried wontons, fried tofu, hard-boiled eggs, or even beef tendons as additional toppings. Feel free to add any of these to make your bowl more substantial.
- Spice level: The broth itself is typically not spicy—diners add heat through sambal according to their preference. If you prefer an already spicy broth, add 1-2 bird's eye chilies to the stock while it simmers, but this is not traditional.
AI disclosure: This recipe article was drafted with AI assistance and reviewed by HalalLens for accuracy and halal compliance.









