Ingredients
This recipe is divided into three parts: the meatballs, the soup and the garnishes.
For the Meatballs
- 2 lbs ground beef
- Β½ cup finely chopped white onion
- Β½ cup uncooked long-grain white rice
- 1 large egg
- 2 garlic cloves, minced
- ΒΌ cup chopped fresh cilantro
- 1 teaspoon ground cumin
- 1 teaspoon dried oregano
- 1 teaspoon salt
- Β½ teaspoon black pepper
For the Soup
- 6 cups beef broth
- 1 can (14.5 oz) diced tomatoes
- 2 tablespoons tomato paste
- 1 to 2 chipotle peppers in adobo sauce, minced
- 2 medium potatoes, peeled and diced
- 2 carrots, sliced
- 1 zucchini, diced
- 1 cup corn kernels
- Β½ white onion, diced
- 2 garlic cloves, minced
- 1 teaspoon ground cumin
- 1 teaspoon dried oregano
- 1 tablespoon olive oil
- Salt and black pepper, to taste
For Serving
- Fresh cilantro
- Lime wedges
- Diced avocado
Instructions
In a large bowl, combine the ground beef, finely chopped onion, uncooked rice, egg, minced garlic, cilantro, cumin, oregano, salt and black pepper. Mix gently with your hands, just until everything is combined. Overmixing compacts the meat and results in tough, dense meatballs, so stop as soon as the ingredients are evenly distributed.
Roll the mixture into small meatballs, about 1Β½ inches in diameter. Keep them uniform in size so they cook evenly. Wet your hands slightly with cold water to prevent sticking. Place the shaped meatballs on a plate or baking sheet while you make the soup base. You should end up with roughly 30 to 36 meatballs.
Heat the olive oil in a large pot over medium heat. Add the diced onion and cook for 2 to 3 minutes, stirring occasionally, until softened and slightly translucent.
Stir in the minced garlic, cumin and oregano. Cook for about 30 seconds until fragrant. Be careful not to let the garlic burn, as it can turn bitter.
Add the diced tomatoes with their juices, the tomato paste and the minced chipotle peppers. Stir well so the tomato paste dissolves and the chipotles are evenly distributed. Let the mixture cook for a minute or two so the flavors begin to meld.
Pour in the beef broth and bring the soup to a gentle boil. Taste the broth at this stage. It should already taste savory and slightly smoky.
Add the diced potatoes and sliced carrots. Reduce the heat to medium-low and let the soup simmer for about 10 minutes, so the vegetables begin to soften.
Carefully lower the meatballs into the soup one at a time. Do not stir aggressively after adding them. Raw meatballs are fragile at first, and rough stirring can break them apart. Instead, gently nudge the pot or swirl it if you need to move things around.
Cover the pot and let the soup simmer gently for 20 to 25 minutes, until the meatballs are cooked through and the rice inside them is tender. Keep the heat low. A rolling boil can break the meatballs apart, while a gentle simmer keeps them intact.
During the final 8 to 10 minutes of cooking, add the diced zucchini and corn kernels. This keeps the zucchini tender but not mushy and the corn sweet and bright.
Taste the broth and adjust the seasoning with salt and black pepper. If you want more heat, stir in another minced chipotle or a spoonful of the adobo sauce.
Ladle the hot soup into bowls, giving each person several meatballs and plenty of vegetables. Garnish with fresh cilantro and serve with lime wedges and diced avocado on the side.