Indonesian meatball soup, commonly called bakso, pairs tender, springy beef meatballs with a savory broth and noodles, then adds fresh greens and crunchy toppings at the table. Versions vary by region and cook; this home-style recipe uses a simple beef-and-tapioca meatball and a clear, garlic-scented broth that is easy to customize.
Ingredients
- 1 lb (454 g) lean ground beef, cold
- 1 large egg (about 1.8 oz/50 g), cold
- 1/3 cup (40 g) tapioca starch
- 3 tablespoons (45 ml) ice-cold water
- 2 garlic cloves (about 10 g), finely grated or minced
- 1 teaspoon (5 g) fine salt
- 1/2 teaspoon (1 g) ground white pepper
- 1 tablespoon (15 ml) neutral oil
- 2 shallots (about 50 g), thinly sliced
- 4 garlic cloves (about 20 g), lightly crushed
- 8 cups (1.9 L) low-sodium beef stock
- 2 cups (480 ml) water
- 1 tablespoon (15 ml) fish sauce, or 1 tablespoon (15 ml) soy sauce for a fish-free alternative
- 1 teaspoon (4 g) granulated sugar
- 1/2 teaspoon (1 g) ground white pepper, plus more to taste
- 2 celery stalks (about 100 g), cut into 2-inch (5 cm) lengths
- 8 oz (225 g) dried rice vermicelli or egg noodles
- 8 oz (225 g) baby bok choy, halved lengthwise or roughly chopped
- 3 scallions (about 30 g), thinly sliced
- 1/3 cup (20 g) fried shallots
- 1 lime (about 60 g), cut into wedges
- 1/4 cup (60 ml) sambal or other chili sauce, for serving
Instructions
- Mix the meatball mixture. Put the cold ground beef, egg, tapioca starch, ice water, grated garlic, salt, and 1/2 teaspoon white pepper in a food processor. Pulse in short bursts until the mixture looks sticky and evenly combined, scraping the bowl once if needed; usually 30 to 45 seconds of pulsing is enough. Avoid running the machine continuously, which can warm the mixture. If you do not have a food processor, combine the ingredients in a chilled bowl and knead firmly with a sturdy spoon or gloved hand for 3 to 4 minutes, until tacky.
- Shape and chill. With damp hands, roll the mixture into 16 meatballs, about 1 1/2 inches (4 cm) across. Keep them similar in size so they cook at the same pace. Set them on a parchment-lined plate, cover, and refrigerate for 20 minutes. Chilling firms the soft mixture and makes it easier to handle; it is a short rest, not a substitute for cooking the meatballs fully.
- Build the broth. While the meatballs chill, heat the oil in a large heavy pot over medium heat. Add the sliced shallots and crushed garlic and cook for about 3 minutes, stirring, until fragrant and just turning golden. Pour in the beef stock and water, then add the fish sauce, sugar, 1/2 teaspoon white pepper, and celery. Bring to a gentle boil, then lower the heat and simmer uncovered for 25 minutes. Keep the broth at a steady, gentle simmer rather than a hard boil; vigorous bubbling can make it cloudy and may break up the meatballs later.
- Poach the meatballs. Lower the chilled meatballs into the simmering broth one at a time. Adjust the heat to maintain a gentle simmer and cook for 12 minutes, turning the meatballs once if they are not fully submerged. Check the center of a larger meatball with a food thermometer: ground beef must reach the USDA FSIS safe minimum internal temperature of 160°F (71°C). If it has not reached that temperature, simmer for another minute or two and check again. Taste the broth and adjust with a little salt or white pepper if needed.
- Cook the noodles and greens. Prepare the noodles according to their package directions in a separate pot of boiling water, then drain. Cooking them separately keeps their starch from clouding the soup and lets you control their texture. Add the bok choy to the soup for the final 2 to 3 minutes of cooking, just until tender but still bright. The noodles and greens take about 5 minutes altogether when prepared while the soup finishes.
- Assemble and serve. Divide the drained noodles among four deep bowls. Add four meatballs to each bowl, ladle over the hot broth and bok choy, and finish with scallions and fried shallots. Put lime wedges and sambal on the table so each person can adjust the acidity and heat. Serve promptly while the noodles are springy and the shallots are crisp.
Tips
- Keep the beef cold. Cold meat and water help the mixture stay firm while you process and shape it. If it becomes soft or sticky enough to slump, cover it and chill it for 10 minutes before continuing.
- Look for tapioca starch, not tapioca pearls. Tapioca starch is sold in many grocery stores and Asian markets. Potato starch is the closest practical substitute in this recipe; it may give the meatballs a slightly different, less distinctly springy texture. Cornstarch works in a pinch, but the result will be firmer and less elastic.
- Season the broth gradually. Stock and fish sauce vary in saltiness, so taste after the meatballs cook before adding extra salt. A squeeze of lime at the table brightens a bowl without requiring more salt.
- Do not overwork or boil hard. Pulse only until sticky, and poach at a gentle simmer. Excessive processing can make the mixture warm and difficult to shape; a rolling boil can roughen the meatballs and cloud the broth.
Serving Suggestions
Serve bakso as a complete meal in large bowls, with the noodles and greens at the bottom and enough hot broth to surround them. Rice vermicelli gives a light, delicate bowl, while egg noodles make it heartier; either is suitable, so follow the package cooking time rather than assuming every noodle cooks alike. Offer lime wedges, sambal, extra white pepper, and fried shallots separately. That lets diners balance the mild, savory soup with sharp citrus, chili heat, or a crisp onion topping.
For a fuller spread, add a plate of sliced cucumber or blanched greens and serve rice crackers on the side for crunch. If serving several people, keep the pot of broth warm and assemble bowls individually just before eating. Noodles left sitting in broth continue to absorb liquid and soften, so keep extra noodles separate until they are needed.
Variations
Use a different noodle. Rice vermicelli is a convenient choice, but wheat egg noodles, rice sticks, or cooked rice can stand in. Rice makes the bowl more like a soup served over a grain; wheat noodles bring a chewier texture. Cook whichever option you choose separately, especially if it releases starch into the water.
Make it fish-free. Replace the fish sauce with the listed amount of soy sauce. The broth will taste a little less rounded and more directly savory, so taste before adding any additional seasoning. For a soy-free option, use a pinch more salt instead, added gradually.
Add vegetables or tofu. Thinly sliced napa cabbage, spinach, or bean sprouts can join the broth near the end; cook only until tender. For extra substance, add cubed firm tofu to the broth during the last few minutes. These additions change the bowl but keep the same clear-soup approach.
Adjust the meatball seasoning. A small amount of finely minced scallion or a pinch of ground coriander can be mixed into the beef. Keep additions modest so the beef, garlic, and pepper remain noticeable. If you prefer smaller meatballs, shape 24 instead of 16 and begin checking them a few minutes earlier; confirm the center still reaches 160°F (71°C).
Storage and Reheating
For best texture, store the broth and meatballs separately from the noodles and fresh toppings. Transfer leftovers to shallow containers and refrigerate within 2 hours of cooking. The broth and cooked meatballs keep for 3 to 4 days in the refrigerator; cooked noodles are best within about 3 days and may become softer over time. Freeze broth and meatballs in a sealed freezer-safe container for up to 2 to 3 months for best quality. Thaw overnight in the refrigerator, not on the counter.
Reheat only the amount you plan to serve. Warm the broth and meatballs in a saucepan over medium heat, stirring gently, until the leftovers reach 165°F (74°C); check the broth and a meatball with a food thermometer. Add a splash of water if the broth has reduced. Reheat noodles separately in hot water or briefly in the microwave, then assemble with fresh scallions and fried shallots. Avoid repeatedly cooling and reheating the full pot, since that affects both safety and texture.
Frequently Asked Questions
What does bakso mean?
Bakso is the Indonesian name commonly used for meatballs and for dishes served with them. Bakso soup is often sold as a noodle-and-meatball meal, but recipes and garnishes differ from place to place and from one cook to another.
Can I make the meatballs without a food processor?
Yes. Use cold ingredients and work them together firmly in a chilled bowl with a sturdy spoon or gloved hand until the mixture becomes sticky. The texture may be a little less uniform than a processor-made mixture, but tapioca starch and thorough mixing still help the meatballs hold together.
Can I use store-bought meatballs?
Yes, plain beef meatballs are a useful shortcut, though their seasoning and texture will differ from bakso-style meatballs. Check the package directions and heat them in the broth until the center reaches 160°F (71°C) if they are raw. If they are fully cooked, reheat them thoroughly in the soup and follow the package guidance.
Why did my meatballs turn out dense?
They may have been processed for too long, packed too tightly while shaping, or made with a mixture that warmed up. Pulse just until sticky, shape with a light hand, and keep the mixture cold. Also use tapioca starch rather than substituting a much larger amount of another thickener.
Can I prepare parts of the soup ahead?
Yes. Make and chill the raw meatballs for up to a day, keeping them covered in the refrigerator, and prepare the broth ahead as well. Cook the meatballs in the broth and prepare the noodles close to serving time for the best texture. Keep raw meat separate from ready-to-eat toppings and wash hands and utensils after handling it.
Related
- Curry Mantra Indian Cuisine: Homestyle Chicken Curry
- Curry King Indian Takeaway-Style Chicken Curry
- Egyptian Rice for 5 kg: A Practical Large-Batch Recipe
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).