Ingredients
For the Meatballs
- 1 lb lean ground beef
- 1 large egg
- 1/4 cup finely crushed pork rinds or plain breadcrumbs
- 2 tbsp finely grated Parmesan cheese
- 2 garlic cloves, minced
- 1/2 tsp ground cumin
- 1/2 tsp Mexican oregano
- 1/2 tsp chili powder
- 1/4 tsp smoked paprika
- 1/2 tsp kosher salt
- 1/4 tsp black pepper
For the Soup
- 1 tbsp olive oil
- 3 large poblano peppers
- 1 medium yellow onion, diced
- 3 garlic cloves, minced
- 1 can (14.5 oz) diced tomatoes
- 2 tbsp tomato paste
- 5 cups low-sodium beef broth
- 1 can (4 oz) diced green chiles
- 1 tsp ground cumin
- 1 tsp Mexican oregano
- 1/2 tsp chili powder
- 1/2 tsp smoked paprika
- 1/2 tsp black pepper
- 1 tsp kosher salt, or to taste
- 1 cup shredded Monterey Jack or Oaxaca cheese
- 2 tbsp fresh cilantro, chopped
- 1 tbsp fresh lime juice
Optional Toppings
- Extra shredded cheese
- Diced avocado
- Sour cream
- Fresh cilantro
- Sliced jalapeños
- Lime wedges
Instructions
Step 1: Roast the Poblanos
Place the poblano peppers under a hot broiler or carefully roast them over a gas flame.
Turn frequently until the skins are blistered and charred on all sides.
You aren’t trying to burn the flesh underneath.
The goal is to blacken and loosen the thin outer skin while developing roasted chile flavor.
Step 2: Steam the Poblanos
Transfer the hot roasted poblanos to a bowl.
Cover and allow them to steam for approximately 10 minutes.
The trapped steam loosens the charred skin and makes peeling much easier.
Step 3: Peel and Chop
Once the peppers are cool enough to handle, gently remove the loosened charred skin.
Remove the stems and seeds.
Chop the roasted poblano flesh into bite-size pieces.
Don’t worry about removing every tiny speck of char.
A little remaining char can contribute additional roasted flavor.
Don’t Rinse the Roasted Poblanos
It’s tempting to run roasted peppers under water to remove the skin quickly.
Avoid doing that if possible.
Rinsing can wash away some of the flavorful roasted juices.
Instead, peel the loosened skin away with your fingers or gently scrape it with a knife.
Step 4: Make the Meatball Mixture
In a large bowl, combine:
- Ground beef
- Egg
- Crushed pork rinds or breadcrumbs
- Parmesan
- Minced garlic
- Cumin
- Mexican oregano
- Chili powder
- Smoked paprika
- Kosher salt
- Black pepper
Mix gently until the ingredients are just combined.
Avoid aggressively squeezing or kneading the beef.
Overworking ground meat can produce dense, firm meatballs.
Step 5: Shape the Meatballs
Roll the mixture into approximately 1-inch meatballs.
You should get around 24 small meatballs.
Keeping them relatively small gives you meatball in almost every spoonful and allows them to finish cooking quickly in the broth.
Step 6: Brown the Meatballs
Heat 1 tablespoon olive oil in a large Dutch oven or heavy soup pot over medium-high heat.
Add the meatballs in batches.
Brown for approximately 4–5 minutes, turning gently so several sides develop color.
They don’t need to cook completely through at this point.
Transfer the browned meatballs to a clean plate.
Why Brown the Meatballs First?
You could technically cook meatballs directly in broth, but browning gives this soup significantly more flavor.
The browned meat creates savory caramelized notes.
It also leaves flavorful browned bits on the bottom of the pot that become part of the soup base.
Just remember that you’re browning, not fully cooking, the meatballs during this step.
Step 7: Cook the Onion
Reduce the heat slightly if necessary.
Add the diced yellow onion to the same pot.
Cook for approximately 3–4 minutes, stirring occasionally, until it begins to soften.
The moisture from the onion will also help loosen some of the flavorful browned bits left behind by the meatballs.
Step 8: Add the Garlic
Stir in the minced garlic.
Cook for approximately 30 seconds, just until fragrant.
Don’t let the garlic burn.
Step 9: Toast the Tomato Paste and Spices
Add:
- 2 tablespoons tomato paste
- 1 teaspoon cumin
- 1 teaspoon Mexican oregano
- 1/2 teaspoon chili powder
- 1/2 teaspoon smoked paprika
- 1/2 teaspoon black pepper
- 1 teaspoon kosher salt
Cook for approximately 1 minute, stirring constantly.
Briefly cooking the tomato paste and dried spices before adding the broth helps deepen their flavor.
Step 10: Build the Broth
Pour in:
- 1 can diced tomatoes
- 5 cups low-sodium beef broth
- 1 can diced green chiles
Add the chopped roasted poblanos.
Stir thoroughly, scraping the bottom of the pot to release any remaining browned bits.
Step 11: Return the Meatballs
Bring the broth to a gentle simmer.
Carefully return the browned meatballs and any accumulated juices to the pot.
Arrange them so they’re mostly surrounded by broth.
Step 12: Simmer
Cook uncovered at a gentle simmer for approximately 15–20 minutes.
Avoid an aggressive rolling boil.
A gentle simmer cooks the meatballs while helping them remain tender.
The soup is ready for the next step once the meatballs are cooked through and the flavors have developed.
For ground beef, cook the meatballs to an internal temperature of 160°F in the center.
Step 13: Add the Cheese 🧀
Reduce the heat to LOW.
Sprinkle 1 cup shredded Monterey Jack or Oaxaca cheese across the hot soup.
Cover the pot for approximately 2–3 minutes.
The residual heat will soften and melt the cheese around the meatballs and roasted poblanos.
Avoid aggressively boiling the soup after adding the cheese.
Step 14: Finish with Lime and Cilantro
Stir in:
- 1 tablespoon fresh lime juice
- 2 tablespoons chopped cilantro
Taste the broth.
Adjust salt, lime, or chile seasoning if needed.
Step 15: Serve
Ladle the hot soup into bowls.
Finish each bowl with your favorite toppings.
Try:
- Extra Monterey Jack
- Diced avocado
- Sour cream
- Cilantro
- Sliced jalapeños
- Lime wedges
Serve immediately.
- Prep Time: 25 minutes
- Cook Time: 40 minutes
Nutrition
- Serving Size: 6
- Calories: approximately 390 calories per serving
- Sugar: approximately 32g per serving