In a large bowl, gently combine the ground meat, breadcrumbs, Parmesan, egg, garlic, parsley, salt, and pepper. Mix just until combined.
Roll into small, bite-sized meatballs (about 1 inch). Heat a drizzle of olive oil in a skillet over medium heat and lightly brown the meatballs on all sides. They don't need to cook through. Set aside.
In a large soup pot or Dutch oven, heat olive oil over medium heat. Add the onion, carrots, and celery. Sauté for 5–7 minutes until soft and fragrant.
Pour in the chicken stock and bring to a gentle boil. Carefully add the meatballs and reduce to a simmer. Cook for about 10 minutes.
Stir in the pasta and cook according to package directions. During the last 2 minutes of cooking, add the spinach and let it wilt into the soup.
Stir in the Parmesan cheese, taste, and season with additional salt and pepper if needed. Serve hot with extra Parmesan on top.