01 -
In a large bowl, combine the ground beef (or beef/pork mixture), breadcrumbs, Parmesan cheese, egg, minced garlic, parsley, salt, and pepper. Mix until well combined.
02 -
Roll the mixture into small meatballs, about 1 inch in diameter, and set them aside on a plate.
03 -
Heat a large pot or Dutch oven over medium heat and add a tablespoon of olive oil. Once hot, add the meatballs in batches and brown them on all sides, about 5-7 minutes. The meatballs don’t need to be fully cooked through, as they will finish cooking in the soup. Remove the browned meatballs and set them aside.
04 -
In the same pot, add the chopped onion, carrots, and celery. Sauté for about 5 minutes until the vegetables soften. Add the minced garlic and cook for another minute until fragrant.
05 -
Pour in the broth, diced tomatoes (with their juice), oregano, and basil. Stir to combine. Bring the mixture to a boil, then reduce the heat to a simmer.
06 -
Add the browned meatballs back into the pot, cover, and simmer for about 15-20 minutes, allowing the flavors to meld and the meatballs to cook through.
07 -
Stir in the pasta and cook according to the package instructions until al dente, about 8-10 minutes. Add the spinach or kale during the last 5 minutes of cooking.
08 -
Taste the soup and adjust seasoning with salt and pepper as needed. Ladle the soup into bowls and garnish with grated Parmesan cheese and fresh basil or parsley, if desired.