Prepare the meatballs: place the ground beef, ground pork, egg, breadcrumbs, grated parmesan cheese, garlic powder, dry minced onion, chopped parsley, salt, and pepper in a large bowl. I like to use my hands to mix everything until well combined, but make sure not to overwork the meat mixture. Divide it into small balls ( ¾-inch in diameter). Small meatballs are great because you can eat a whole one in each spoonful of soup.
Heat 1 tbsp of olive oil in a large Dutch oven or pot over medium-high heat and brown the meatballs on all sides. Depending on the size of your pot, you might need to do this in batches. Transfer the brown meatballs to a plate and set aside.
Drain the fat from the meat and wipe the pot clean with a paper towel.
Add one more tablespoon of olive oil to the pot and saute the chopped onion, carrots, celery, and garlic until tender, about 5 minutes.
Pour in the chicken broth and add the dry oregano and basil. Return the meatballs to the pot and bring to a simmer.
Mix in the uncooked pasta if you like a thicker broth and simmer until cooked, or cook the pasta in a separate pot and add the cooked pasta to the soup if you like a thinner broth.
Finally, once the pasta is cooked, add the baby spinach and cook for an additional 2-3 minutes more, or until wilted. Adjust the seasoning with salt and pepper if needed. Serve with freshly grated Parmesan on top.