In a large saucepan or Dutch oven, warm the olive oil over medium heat.
Add the sliced onions and cook, stirring occasionally, for 5 to 10 minutes until they are soft, fragrant, and tender.
In a small bowl, whisk the flour into the milk until completely smooth to create a slurry.
Pour this mixture into the saucepan with the onions.
Cook, stirring constantly, for 5 minutes as it thickens into a base for our soup.
Pour in the vegetable broth and add the sliced potatoes.
Stir everything together and bring the mixture to a boil.
Once boiling, reduce the heat to low, cover the pan, and let it simmer for about 20 minutes, or until a fork easily pierces the potato slices.
Carefully transfer the soup to a blender in batches (never fill a blender more than halfway with hot liquid).
Cover and blend until the soup is velvety and almost smooth. Return the blended soup to the saucepan.
Gently reheat the soup over medium-low heat, but do not let it boil. Gradually stir in the shredded cheese, a handful at a time, until it has completely melted into a smooth, luscious sauce.
Season generously with salt and pepper to your liking.
Ladle the hot soup into bowls.
Garnish with a sprinkle of fresh herbs and, if you're feeling extra decadent, a few thin slices of baby Swiss cheese.
Using freshly shredded cheese from a block is a game-changer. Pre-shredded cheeses often contain anti-caking agents that can prevent them from melting smoothly.