Snip or chop bacon into small pieces and sauté in a soup pot until crispy. Once crisp, remove, blot dry and allow it to cool. Once cool, transfer to a small ramekin or bowl until ready to serve the soup.
Place potatoes, onions and a bay leaf into the soup pot with the bacon drippings and sauté over medium heat for 5 minutes, stirring often. Season with black pepper and a pinch or two of salt.
Remove pot from heat. Scrape the potatoes and onions into a bowl and set aside.
Place butter into the pot, return to heat. Once butter melts, add in flour and whisk together allowing it to cook enough to remove the raw flour taste, about a minute. Be sure you whisk the mixture the whole time.
Slowly add in your milk, whisking vigorously as you do. Allow it to just begin to bubble and thicken then, add in 1 ½ cups of the broth/stock, whisking vigorously as you do.
Carefully add the potato mixture back into the pot, cover and simmer on low for 15-20 minutes with lid on, stirring often. Remove from heat, leaving the lid on, and allow the soup to sit for a bit (which ensures potatoes are fully cooked and flavors mingle).
Using an immersion blender, blend the soup until smooth. If you enjoy chunks of potato in the soup, blend less. You can also puree the soup in batches in your blender. Just remember that heat has energy, so place a dish towel on top of the blender lid and press down firmly ensuring no soup spurts out.
Return soup to your pot, stir in the cheese until melted. Taste and adjust seasoning. This is also where you can choose to add additional broth/stock to thin the soup a little if necessary or according to your preference. I also add in red pepper flakes here as well as about 1 teaspoon smoked paprika.
Ladle into serving bowls, top with snipped scallions, bacon & more cheese if you like. Enjoy!