In a mixing bowl, combine the ground beef, breadcrumbs, Parmesan cheese, parsley, minced garlic, egg, salt, and pepper. Mix until combined, then form into small meatballs, about 1 inch in diameter.
In a large pot, heat the olive oil over medium heat. Add the diced onion, carrots, and celery. Sauté for about 5 minutes, until the vegetables are softened.
Add the meatballs to the pot and brown them on all sides, about 5 minutes.
Pour in the broth and add the diced tomatoes and Italian seasoning. Bring the mixture to a boil.
Once boiling, reduce the heat to a simmer and let cook for about 10 minutes.
Add the pasta to the pot and cook according to package instructions, usually about 8-10 minutes until al dente.
Stir in the fresh spinach and cook for an additional 2-3 minutes until wilted.
Season the soup with salt and pepper to taste.