In a large bowl, combine the ground beef, ground pork, breadcrumbs, Parmesan, egg, minced garlic, parsley, salt, and pepper. Mix gently with your hands or a fork until just combined.
Using a small cookie scoop, portion the mixture into meatballs about 1/2 inch (1.3cm) across. Roll each portion briefly between your palms to round it out, then set the meatballs on a plate or tray.
Heat the olive oil in a Dutch oven over medium heat. Working in two batches, add the meatballs in a single layer and cook for 2 to 3 minutes per side until browned. Transfer to a clean plate and set aside.
In the same pot, add the diced onion, carrots, and celery to the leftover oil and browned bits. Cook over medium heat for 5 to 6 minutes until softened. Add the minced garlic and cook for 1 more minute, stirring constantly.
Pour in the chicken broth and scrape up any browned bits from the bottom of the pot with a wooden spoon. Bring the broth to a boil, then reduce heat to a simmer and return the browned meatballs to the pot. Simmer for 10 minutes until cooked through.
While the meatballs simmer, cook the acini di pepe separately in salted water according to package directions, usually 4 to 5 minutes. Drain the pasta well using a fine mesh strainer.
Stir the drained pasta directly into the soup pot with the meatballs and broth. Add the chopped baby spinach and stir until it wilts, about 1 to 2 minutes.
Taste the broth and add salt and pepper as needed. Ladle the soup into bowls and top with extra grated Parmesan before serving.