In a large saucepan or Dutch oven, melt the butter over medium-low heat.
Whisk in the flour to form a paste, known as a roux.
Cook for 2-3 minutes, stirring constantly, to cook out the raw flour taste.
Do not let it brown.
Slowly pour in the hot milk while whisking continuously.
Continue to whisk over medium heat until the mixture thickens into a smooth, lump-free béchamel sauce.
Reduce the heat to low and stir in the heavy cream. It's crucial that the soup stays hot but does not boil from this point on.
Gradually add the grated Gouda and smoked Edam, a handful at a time, stirring constantly with a wooden spoon until each addition is fully melted before adding the next.
Once all the cheese is incorporated and the soup is velvety smooth, stir in the vegetarian Worcestershire sauce, paprika, and a dash of Tabasco or cayenne.
Season with salt and pepper to your liking.
Serve immediately in warm bowls, accompanied by garlic toast for dipping.
Once you add the cream and cheese, keep the heat very low.
Boiling the soup can cause the dairy to separate and the cheese to become grainy.
Patience is key!