Ingredients
Equipment
Method
- In a large bowl, gently combine the ground beef, breadcrumbs, Parmesan cheese, egg, garlic, parsley, oregano, salt, pepper, and milk. Don't overmix.
- Form the mixture into small meatballs, about 1 inch in diameter.
- In a large skillet, heat 1 tablespoon of olive oil over medium heat. Brown the meatballs in batches, turning occasionally, until browned on all sides.
- In a large pot or Dutch oven, heat the remaining olive oil over medium heat. Add the onion, carrots, and celery and cook until softened, about 5-7 minutes.
- Add the garlic and cook for another minute, until fragrant.
- Pour in the beef broth, crushed tomatoes, and diced tomatoes. Stir in the basil, oregano, and red pepper flakes (if using). Season with salt and pepper to taste.
- Bring the soup to a simmer, then reduce heat and simmer for at least 15 minutes to allow the flavors to meld.
- Gently add the browned meatballs to the soup. Make sure they are submerged in the liquid.
- Simmer the soup for another 15-20 minutes, or until the meatballs are cooked through.
- Add the pasta to the soup and cook according to package directions, until al dente.
- Ladle the soup into bowls and garnish with fresh parsley and grated Parmesan cheese.
- Serve immediately and enjoy.
Notes
For best results, simmer the soup for a longer time to develop deeper flavors. If meatballs are falling apart, try chilling the meatball mixture before forming them. To make ahead, prepare the soup (without pasta) and store in the refrigerator for up to 2-3 days. Add pasta just before serving. Store leftover soup in an airtight container in the refrigerator for up to 3-4 days. Soup can be frozen for up to 2-3 months, but pasta may become mushy when thawed.
