In a large bowl, combine the ground beef, ground pork, egg, bread crumbs, parmesan, garlic, parsley, and salt for the meatballs until evenly mixed. (I usually use my hands for this.)
Use a 1 tablespoon cookie scoop to school the meatball mixture into about 35 portions. Use your hands to roll each scoop into a ball. Set aside.
Heat 1 tablespoon of olive oil in a large pot over medium heat. Working in batches, brown the meatballs for 30 seconds to 1 minute per side. Transfer to a plate, add more oil as needed, and repeat until all the meatballs are cooked.
Start the soup by adding the onions, carrots, and celery to the same pot (add a little more olive oil if needed). Cook over medium heat for 5 minutes. Add the garlic, Italian seasoning, and salt and cook for 1 minute until fragrant.
Pour in the chicken broth and add the meatballs back to the pot. Bring to a boil, and then reduce the heat to medium-low. Let the soup simmer for 10 minutes.
Add the uncooked pasta and bring the heat up to medium. Cook the pasta for about 8 minutes. Add the spinach and cook for another minute until wilted.