Preheat the oven to 350°F (175°C) and line a baking sheet with parchment paper.
Prepare the bread mixture by soaking it in milk for a few minutes, then mashing it into a smooth paste.
Combine ground pork, garlic, parsley, Parmesan, egg, salt, pepper, garlic powder, basil, onion powder, and the bread paste. Stir until fully incorporated.
Form the meatballs by rolling teaspoon-sized portions into small balls. Arrange them on the baking sheet and bake for 20 minutes, or until browned and cooked through. Set aside.
Sauté the vegetables in a large pot with olive oil over medium heat. Cook the onions, carrots, celery, and fennel for 5–7 minutes, stirring occasionally, until softened.
Deglaze the pot by adding white wine. Let it simmer for 2–3 minutes to reduce slightly.
Add the chicken stock and bring the soup to a boil. Reduce to a simmer, cover, and cook for about 10 minutes.
Cook the pasta separately in about 2 cups of chicken broth for approximately 6 minutes, until al dente. Drain and set aside, but return the cooking liquid to the soup.
Incorporate the meatballs into the soup. Cover and let it simmer for another 10 minutes.
Add the spinach and cook for 1–2 minutes until just wilted.
Adjust seasoning as needed with additional salt and pepper. Serve hot, garnished with extra Parmesan.