Make the Italian meatballs. Cover and set aside. You can make them ahead of time and store them in an airtight container in the refrigerator up to 24 hours in advance.
Heat olive oil in a large pot over medium-high heat. Add carrots, onions, and celery and saute until veggies are soft, about 8 minutes; add garlic and saute 1 minute longer.
Pour in chicken broth, season the soup with salt and pepper to taste, and bring the mixture to a boil. Add the meatballs, and reduce heat to a light boil(about medium or medium-low).
Cover and cook, occasionally stirring, until the meatballs have cooked through and are tender, about 10 minutes.
Add the spinach during the last few minutes of cooking.
Bring salted water to a boil in a separate small pot and cook the pasta according to package directions (about 8-10 minutes). Drain and add the cooked pasta to serving bowls, then add the hot soup on top of the cooked pasta. Alternatively, you can cook the pasta in the soup and add at the same time as the meatballs.
Serve warm. Sprinkle each serving with freshly grated parmigiano cheese and serve with bread.
Notes
Always use freshly grated Parmigiano Reggiano for the best flavor and texture. It makes all the difference—skip the pre-shredded stuff!
Make a double batch of meatballs and freeze half for later. Freeze them on a baking sheet in a single layer, then transfer to a freezer-safe container for up to 2 months. Just drop the frozen meatballs into the hot broth and simmer until warmed through.
To keep the soup from getting too thick, especially if you plan on leftovers, cook the pasta separately and add it to each bowl when serving.