To a large pot, add bacon and turn heat to medium. Cook bacon until just cooked through but not too crunchy. Use a slotted spoon to transfer the bacon to a paper-towel lined plate and set aside.
Spoon off and discard all but about 1 tablespoon of bacon grease from the pot. Add onions and celery and cook over medium heat for about 5 minutes, until the onions begin to turn translucent around the edges.
Add potatoes and chicken broth and bring to a simmer. Simmer for 10 minutes and then stir the broccoli into the soup.
Bring the soup back to a simmer and cook for an additional 5 minutes or until broccoli and potatoes are tender.
In a medium pot, melt butter over medium heat. Add flour and whisk continuously for about 1 minute, until the flour begins to turn lightly golden.
Slowly whisk in milk, whisking out any lumps as they begin to form. Cook, whisking continuously until the mixture thickens and bubbles around the edges, about 5 minutes.
Remove sauce from heat and stir in shredded cheese one handful at a time. When all the cheese has been incorporated, pour the cheese sauce into the soup and stir until everything is well mixed.
Stir in the cooked bacon.
Add pepper. Taste, and add salt and more pepper if needed.
Serve with additional cheese if desired, and enjoy!