In a large stockpot, add the whole chicken, water, onion, garlic, celery, carrots, bay leaf, oregano, basil, salt, and pepper. Bring to a boil, then reduce the heat to low and simmer for 1–1.5 hours, skimming off any foam that rises to the surface.
Remove the chicken from the pot and let it cool. Strain the broth through a fine-mesh sieve and set it aside. Discard the solids.
Once the chicken is cool enough to handle, remove the skin and bones, and shred the meat into bite-sized pieces. Set aside.
Heat the olive oil in a large soup pot over medium heat. Add the onion, carrots, and celery. Sauté for 5–7 minutes, or until softened.
Stir in the zucchini (if using) and the diced tomatoes with their juices. Cook for another 3 minutes.
Pour in the reserved broth and bring it to a simmer.
Add the small pasta to the soup and cook according to package instructions until al dente.
Stir in the shredded chicken and fresh spinach. Cook for another 2–3 minutes, or until the spinach is wilted and the chicken is heated through.
Ladle the soup into bowls and garnish with fresh parsley and a sprinkle of grated Parmesan cheese. Serve with crusty Italian bread for a complete meal.
