Peel and dice the potatoes into 1/2-inch cubes. Chop 1 cup of celery and 1 large onion.
In a large pot, cook bacon over medium heat until crispy, then transfer to paper towels to drain. Reserve 2 tbsp bacon grease in the pot. Add butter, onions and celery. Cook for 5 minutes until softened.
Add the potatoes and chicken broth. Increase heat and bring the soup to a boil. Then reduce to a simmer for 15-20 minutes until potatoes are very soft.
In a separate bowl, whisk together the flour and milk until smooth. Slowly stir into the soup.
Using an immersion blender, puree the soup until smooth and creamy. Alternatively, you can puree in batches in a blender.
Stir in salt, pepper, and more milk or broth to reach the desired consistency. Crumble in cooked bacon.
Ladle the soup into bowls. Garnish with shredded cheese, chopped chives, or sour cream if desired.