Step 1: Make the Meatballs : In a large bowl, combine the ground beef, breadcrumbs, Parmesan, garlic, parsley, egg, oregano, salt, and pepper. Mix until just combined (don’t overmix or the meatballs will be tough). Roll into small 1-inch meatballs and set aside on a plate.
Step 2: Brown the Meatballs : Heat olive oil in a large soup pot or Dutch oven over medium heat. Add the meatballs in batches and brown them on all sides (about 5 minutes total per batch). Transfer the browned meatballs to a plate — they don’t need to be cooked through yet.
Step 3: Prepare the Soup Base : In the same pot, add the onion, carrots, and celery. Sauté for 5–6 minutes until softened. Add minced garlic and cook for another 30 seconds until fragrant. Stir in crushed tomatoes, broth, basil, oregano, and red pepper flakes. Season with salt and pepper to taste.
Step 4: Simmer the Soup : Bring the soup to a gentle boil, then reduce to a simmer. Add the browned meatballs back into the pot. Cover and simmer for 25–30 minutes, until the meatballs are fully cooked and the flavors meld beautifully.
Step 5: Add the Pasta : Stir in the pasta and cook for another 8–10 minutes, or until the pasta is al dente. Stir occasionally to prevent the pasta from sticking to the bottom.
Step 6: Taste and Adjust : Check for seasoning — add more salt, pepper, or herbs if needed. If the soup thickens too much, add a splash of broth or water.