In a medium bowl, combine ground beef, breadcrumbs, egg, Parmesan cheese, salt, and pepper. Mix gently until just combined. Roll into small meatballs, about 1 inch in diameter.
Heat olive oil in a large pot or Dutch oven over medium heat. Add the chopped onion, carrots, and celery. Cook until softened, about 5-7 minutes.
Add the minced garlic and cook for 1 minute more until fragrant.
Pour in the chicken broth and add the diced tomatoes, dried oregano, salt, and pepper. Bring to a boil.
Carefully drop the meatballs into the boiling broth. Reduce heat to low, cover, and simmer for 15-20 minutes, or until the meatballs are cooked through.
Add the small pasta to the pot and cook according to package directions, usually 8-10 minutes, until al dente.
If using, stir in the fresh spinach and cook until wilted, about 1-2 minutes.
Taste and adjust seasoning with salt and pepper if needed.
Ladle the soup into bowls and garnish with fresh chopped parsley.
Notes
This hearty meatball soup is perfect for a chilly evening. It can be made ahead of time and reheated.