Cook the bacon until crispy in a skillet over medium heat. Remove, chop and set aside. Pour grease from skillet, but don’t clean it out. Add the onion, garlic, salt and pepper to the skillet. Cook, stirring occasionally, until onions are soft and fragrant, approximately 3-4 minutes.
Add the onion-garlic mixture, along with chicken stock and potato chunks, to a Dutch oven or heavy saucepan. Bring to a boil and reduce to simmering. Simmer for 10 minutes, or until potatoes are tender. Use an immersion blender or potato masher to reduce chunkiness (if desired).
Melt butter over medium heat in the same skillet. Add flour and whisk until combined. Add milk and continue to whisk until mixture is thick, approximately 3-5 minutes.
Add the milk mixture to the Dutch oven, along with chopped bacon, ham and cheese. Stir until cheese is melted and soup is warmed through. Serve warm and top with sour cream, extra cheese, bacon bits, ham or green onion slices, if desired of the weekend!