1 (32 oz.) carton low-sodium chicken or vegetable broth
1 heads broccoli, cut into florets
1/2 small head cauliflower, cut into florets
3 medium russet potatoes, peeled and diced
3 carrots, peeled and diced
3 stalks celery, diced
1 yellow onion, finely chopped
4 cloves garlic, minced
1/2 tablespoons Italian seasoning
1/4 teaspoon dried thyme
1/4 teaspoon paprika
1/4 teaspoon cayenne or chili powder
5 tablespoons unsalted butter, divided
5 tablespoons all-purpose flour
2 cups sharp cheddar cheese, grated
3 cups whole milk
1/2 cup heavy cream
Kosher salt and freshly ground pepper, to taste
Melt 1 tablespoon butter in a large pan or skillet over medium-high heat and sauté onion, carrot and celery for 6-8 minutes, or until softened.
Add minced garlic and sauté for another 1 minute, or until fragrant. Season with Italian seasoning, thyme, paprika, cayenne or chili powder, and salt and pepper.
Pour in chicken or veggie broth and stir in cubed potatoes. Bring mixture to a boil, then reduce heat and let simmer for 15-20 minutes, or until potatoes are just fork tender.
Add broccoli and cauliflower florets and cook for another 6-8 minutes, or until crisp-tender.
In a medium saucepan over medium heat, melt remaining 4 tablespoons butter and whisk in flour. Cook roux mixture for 2-3 minutes, or until golden brown, then whisk in milk.
Bring to a gentle boil, then reduce heat and let thicken, stirring frequently. Stir in heavy cream and season with salt and pepper, then whisk mixture into soup.
Add cheese as well and stir until melted and smooth.
Transfer to serving bowls, serve hot and enjoy!