Heat olive oil and butter in a large pot over medium-high heat. Add onions, carrots, and salt and pepper (to taste; I add ½ teaspoon each). Cook, stirring occasionally, until very tender and golden. Add garlic and cook 1 minute longer.
Sprinkle flour over the vegetables and stir constantly for 1–2 minutes. Slowly whisk in chicken broth, then water, scraping the bottom of the pot to deglaze.
Stir in the dried herbs and bay leaves. Bring to a boil, then add the broken-up pasta pieces. Cook, stirring occasionally so it doesn't catch, for 2 minutes less than the package says.
Remove the bay leaves. Lower the heat and stir in the cream, spinach, chicken, and Parmesan (a small handful at a time) until melted and smooth. Taste and adjust seasoning. For a thinner soup, add more broth; for a thicker soup, increase the heat and simmer a bit longer.
Ladle the soup into bowls and top with extra Parmesan. Add red pepper flakes for a kick if desired, and serve hot with buttered bread.
