Using a Dutch oven or large pot over medium high heat, cook the bacon until all browned and crisp. Remove onto a paper towel lined plate and set aside. Into the same pot with the bacon fat, add the butter and onions and cook until tender, for about 3 to 5 minutes. Add the garlic and cook until fragrant, for about 30 seconds.
Sprinkle the flour over the onions and stir until smooth. Add in the potatoes, chicken stock, milk, heavy cream, Worcestershire sauce and season with salt and pepper. Stir together and bring to a boil. When boiling, lower the heat, cover slightly with a lid and let simmer for about 15 minutes over low heat.
Check the potatoes to ensure they are done with a fork and using an immersion blender, blend the soup. I like to leave my potato soup pretty chunky so I leave lots of potato chunks in there. For a smoother soup, simply pour all of the soup into a blender for best results. Taste and season with salt and pepper if needed.
To serve: if wanting to serve in a bread bowl, heat the bread in the oven and carefully slice off the top. Remove the top part of the bread bowl and remove the inner bread as well. Ladle the soup into the bread bowl and garnish with sour cream, shredded cheddar cheese, the bacon bits, and the diced chives or diced green onions. Enjoy while hot!