Start by melting the butter (or olive oil) over medium heat in your large, heavy-bottomed pot or Dutch oven. Once the butter is melted, add the chopped onions, carrots, and celery. Cook these vegetables, stirring occasionally, until they begin to soften and become fragrant, which will take about 5-6 minutes.
Once your vegetables are softened, stir in the minced garlic, fresh rosemary (or dried if you prefer), and the crushed red pepper flakes. Season the mixture with a pinch of salt and fresh ground black pepper. Cook everything for an additional 30 seconds, allowing the garlic to become fragrant and the flavors to meld together.
Sprinkle the flour over the vegetables and cook, stirring constantly, for about 1 minute. The flour should turn a medium blonde color and take on a toasted, nutty aroma. This step is key to thickening the soup and giving it that creamy texture!
Slowly whisk in 2 cups of the chicken stock (or vegetable broth if you prefer), making sure to break up any lumps of flour. You should have a smooth and thick mixture now. Pour in the remaining stock, whisking until everything is well combined. Bring the soup to a boil, then reduce the heat to a simmer.
Add the chopped potatoes and bay leaf to the pot, and let the soup simmer uncovered for about 20 minutes. You’ll want the potatoes to cook until they’re fork-tender, so check by poking a potato cube with a fork to make sure it slides in easily.
Turn the heat down to low and remove the bay leaf from the soup. Stir in your choice of cream (half and half, sour cream, or plain yogurt) for that rich, velvety texture. If you’re adding cheese, now’s the time to stir it in as well, letting it melt smoothly into the soup for extra flavor.