In large soup pot, saute Onion, Carrots, & Celery in Olive Oil until softened (about 7 minutes) on medium high heat.
Stir in Chicken Broth and Seaonings. Bring to a boil over medium heat.
While soup is cooking, sear your pre-cooked meatballs. I recommend small homemade ones, but I know that's not always an option. If you are using larger, store-bought ones you'll want to cut them in half (you don't want huge meatballs in this soup) and cook them according to package directions. What makes the difference though is searing the meatballs. If I use store-bought, I toss them in a little olive oil and fry in a really, really hot pan to get a good char on the outside. They need texture and store-bought ones just don't have it. It's worth the extra step to do that for this soup. How many meatballs? That is entirely up to you and your taste preferences.
Stir in Acini de Pepe and simmer for 10 minutes, stirring occasionally.
Turn heat to low and add in Spinach and Meatballs. Simmer just until spinach wilts. Serve with fresh shredded Parmesan if desired.