Go Back
Bowl of sopa de albóndigas showing tender beef and rice meatballs in a bright red tomato broth with carrot, potato, and zucchini, topped with cilantro, on marble surface

Sopa de Albóndigas

Sopa de Albóndigas is a classic Mexican meatball soup with tender beef-and-rice meatballs simmered in a savory red tomato broth with carrot, potato, and zucchini. The key is lightly mixed meatballs, a properly cooked tomato base, and a gentle simmer so the albóndigas stay tender and hold together. Mixing the meatball mixture only gently, never kneading or compacting it, is the technique this whole soup depends on — overmixed meat tightens and turns dense, exactly the wrong texture for a meatball meant to stay tender in broth, the same gentle-mix principle used elsewhere in this collection whenever ground meat needs to stay soft and yielding rather than compacted. Cooking the blended tomato base thoroughly before the remaining broth and vegetables join it is what gives the finished soup real savoury depth rather than a raw, flat tomato flavour. Keeping the broth at a genuine gentle simmer, especially once the meatballs go in, is what protects them from breaking apart in a violent boil. The payoff is a bowl with tender, cohesive meatballs holding their shape in a bright red, savoury broth, alongside distinct carrot, potato, and zucchini.
Prep Time 25 minutes
Cook Time 40 minutes
Total Time 1 hour 5 minutes
Servings: 4
Course: Main Course, Soup
Cuisine: Mexican
Calories: 520

Ingredients
  

For the Meatballs
  • 800 g ground beef preferably 85–90% lean
  • 90 g uncooked long-grain white rice rinsed
  • 1 large egg
  • 80 g white onion very finely minced or grated
  • 3 garlic cloves finely grated
  • 20 g fresh cilantro finely chopped
  • 8–10 fresh mint leaves finely chopped
  • 8 g fine sea salt
  • ½ tsp freshly ground black pepper
  • ½ tsp dried oregano
  • 2 tbsp water
For the Broth Base
  • 15 ml neutral oil
  • 180 g white onion roughly chopped
  • 3 garlic cloves
  • 700 g ripe tomatoes roughly chopped, or canned whole peeled tomatoes
  • 1.5 litres beef broth or chicken broth
  • 2 tbsp tomato paste optional, for extra depth
  • 1 tsp dried Mexican oregano
  • ½ tsp ground cumin
  • 2 bay leaves
  • 10 g fine sea salt plus more to taste
  • Freshly ground black pepper to taste
For the Vegetables
  • 2 medium carrots peeled and cut into thick half-moons
  • 2 medium potatoes peeled and cut into medium chunks
  • 2 medium zucchini cut into thick half-moons or chunks
For Finishing
  • 20 g fresh cilantro chopped
  • 2 limes cut into wedges

Method
 

Prepare the Meatball Mixture
  1. Add the ground beef, rinsed rice, egg, finely minced onion, grated garlic, cilantro, mint, salt, black pepper, oregano, and water to a bowl. Mix gently with your hands just until evenly combined. Do not knead or compact the mixture. Shape into 16 small meatballs, about 45–50g each, and set aside on a tray. The mixture should feel cohesive enough to hold its shape, but still soft. Overmixing makes the meatballs dense and tough. Ground meat's proteins tighten and bind together the more they're worked — stopping the mixing the moment everything is evenly distributed, rather than continuing for a smoother-looking mixture, is what keeps the finished meatballs tender rather than dense.
Blend and Cook the Tomato Base
  1. In a blender, combine the roughly chopped onion, garlic, tomatoes, and about 250ml of the broth. Blend until fully smooth. Heat the oil in a large pot or Dutch oven over medium heat. Add the blended tomato mixture carefully and cook for 8–10 minutes, stirring often, until it darkens slightly, thickens a little, and loses its raw tomato smell. Stir in the tomato paste if using, then add the oregano, cumin, bay leaves, salt, a few grinds of black pepper, and the remaining broth. Bring to a gentle simmer. The tomato base should smell savory and cooked, not sharp or raw. This step gives the broth its depth. This active cooking stage is what actually transforms the blended purée from something tasting distinctly raw into a genuine, developed broth base — that transformation doesn't happen automatically once the remaining broth dilutes it, which is why real cooking time here matters before moving forward.
Start the Vegetables
  1. Add the carrots and potatoes to the simmering broth. Cook for 10 minutes at a gentle simmer. The broth should be simmering gently, not boiling hard. A violent boil can break the meatballs later. Establishing this gentle simmer now, before the meatballs are even added, sets the pace the rest of the cook needs to maintain — the meatballs about to go in have essentially no tolerance for the aggressive agitation a hard boil would introduce.
Add the Meatballs
  1. Lower the heat slightly if needed so the soup is only gently bubbling. Carefully drop the meatballs into the broth one by one. Once all are in, do not stir aggressively for the first 8–10 minutes. Gently shake the pot occasionally if needed. Simmer for 15 minutes. The meatballs should begin to firm up and hold together as the rice and proteins set. If stirred too early, they can break apart. Meatballs added directly to hot liquid start out genuinely fragile — their proteins and rice need this initial, undisturbed window to set and firm up before they can withstand any real agitation, which is exactly why aggressive stirring is specifically avoided in this early stretch.
Add the Zucchini and Finish
  1. Add the zucchini and continue simmering for another 10 minutes, or until the meatballs are fully cooked through, the rice inside the meatballs is tender, the potatoes and carrots are tender, and the zucchini is just cooked but not mushy. Taste the broth and adjust salt and pepper as needed. Remove the bay leaves. The final broth should be bright red and savory, the meatballs tender, and the vegetables fully cooked but still holding their shape. Adding the zucchini only in this final stage, well after the denser carrot and potato, protects it from the extra simmering time that would otherwise push it toward collapsing before the rest of the soup is ready.
Serve
  1. Ladle the soup into bowls, making sure each serving gets broth, vegetables, and 4 meatballs. Top with chopped fresh cilantro and serve with lime wedges on the side. Serving the lime as a wedge for squeezing at the table, rather than added into the pot, lets each bowl receive that bright citrus lift at its freshest, right before the first spoonful.

Notes

Mixing the meatball mixture only gently, stopping as soon as everything is evenly combined, deserves genuine respect as the technique most directly responsible for this soup's texture. Ground meat's muscle proteins bind together more tightly the more they're handled — a meatball mixture that's been kneaded or compacted develops a noticeably denser, tougher texture once cooked, working directly against the tender result this recipe specifically calls for.
Cooking the blended tomato base thoroughly before the remaining broth and vegetables are added reflects the same logic used throughout this collection's other tomato-based Mexican soups. A blended purée straight from the blender still carries a distinctly raw, sharp edge, and that quality doesn't disappear simply through dilution — it needs real, dedicated cooking time on its own first to develop into something genuinely savoury.
Establishing a genuine gentle simmer before the meatballs are ever added, and maintaining that same gentle pace throughout their cooking, addresses a real structural vulnerability specific to this dish. Freshly formed meatballs, especially ones mixed gently rather than compacted, are genuinely fragile until their proteins and rice have had time to set — a hard boil at this stage physically agitates the liquid enough to break them apart before that setting process has finished.
The specific instruction against stirring aggressively during the meatballs' first 8–10 minutes in the pot deserves the same attention. That initial window is when the meatballs are at their most vulnerable, still firming up rather than fully set — even well-intentioned stirring during that period risks breaking apart meatballs that would otherwise hold together perfectly well once given the chance to finish setting undisturbed.