Preheat oven to 400 degrees then line a half sheet pan with parchment paper or non stick sprayed foil. To a large bowl add torn bread and grated onion then mix to combine and let sit for 1 minute. Add parmesan cheese, egg, garlic, Italian seasoning, salt, and pepper then stir to combine. Crumble ground pork over the top then use your hands to mix until just combined.
Use a teaspoon to portion meatballs out then gently roll in your hands and place on prepared baking sheet - meatballs can be very close together but not touching. Bake for 25-30 minutes or until golden brown and cooked to an internal temperature of 160 degrees. Set meatballs aside - can be done a few days ahead of time.
For the Soup:
Meanwhile, heat extra virgin olive oil in a large soup pot or Dutch oven over medium heat. Add carrots, celery, and shallot/onion, season with salt and pepper, then saute until the vegetables are tender, 8-10 minutes. If the vegetables are taking too long to soften, I like to add a glug of extra chicken broth to the pot then place a lid on top and let them steam for a few minutes.
Add chicken stock and parmesan cheese rind (if using) then turn heat up to high to bring liquid to a boil. Add pasta then turn heat down to medium-low and simmer until pasta is al dente, 20 minutes or so. Add cooked meatballs then stir to combine. Bring soup back up to a bubble (may need to turn heat up a touch) then add spinach and cook until wilted and tender, 2-3 minutes.
Whisk egg and parmesan cheese together very well in a small dish. Give the soup a couple of big stirs to get the liquid swirling in one direction then slowly stream in egg mixture. Continue to stir to create small threads of egg (NOTE: the eggs are NOT curdled, they are COOKED - like egg drop soup!) Taste then add more salt and/or pepper if desired. Let soup sit and thicken for 10-15 minutes before removing parmesan cheese rind, scooping into bowls, and serving.