Prep your aromatics. Dice the onion, slice the carrots and celery, and mince the garlic.
Keep them roughly the same size so they cook evenly.
Sweat the vegetables. Warm the olive oil in a large pot over medium heat. Add onion, carrots, and celery with a pinch of salt. Cook 6–8 minutes, stirring, until the onion turns translucent and the vegetables soften slightly.
Add garlic and herbs. Stir in the garlic and cook 30–60 seconds, just until fragrant.
Add the bay leaf, rosemary, and parsley sprigs.
Build the broth. Pour in the chicken broth. Bring to a gentle simmer. Nestle in the chicken pieces, skin side up.
If using a whole chicken, lower it in breast side up.
Simmer slowly. Reduce heat to low and simmer uncovered for 35–45 minutes, skimming any foam from the surface. You want a gentle bubble, not a rolling boil, to keep the broth clear and the meat tender.
Remove and shred the chicken. Transfer the chicken to a plate and let it cool slightly. Discard skin and bones, then shred the meat into bite-size pieces.
Cook the pasta. While the chicken cools, bring the soup back to a boil.
Add the pasta and cook according to package instructions until just al dente. If using spinach or escarole, stir it in during the last 2 minutes.
Return the chicken. Add the shredded chicken back to the pot. Remove the bay leaf and herb stems.
Taste and season with more salt and pepper as needed. Stir in lemon juice if you like a brighter finish.
Serve. Ladle into bowls and top with chopped parsley. Add a sprinkle of Parmesan for richness, if desired.