In a large pot, over medium heat, cook the chopped bacon until crispy. Remove the bacon pieces onto a paper towel-lined plate to drain any excess grease. Remove the bacon grease from the pot except for 3 tablespoons.
Add in the onion, celery, and carrot and cook until the onion is translucent over medium heat, about 5-7 minutes. Add the garlic in the last 30 seconds.
Add the potatoes and chicken broth. Bring the mixture to a boil then reduce the heat and simmer for about 10 minutes or until potatoes are tender.
Using a potato masher, mash down some of the tender potatoes, leaving some chunks.
In a small pot, melt the butter over medium heat. Slowly whisk in the flour and whisk until smooth. Cook for one minute over medium heat.
Very slowly add in 2 cups of room temperature milk. Whisk until thickened then season with salt and pepper to taste.
Pour the milk mixture and the remaining 2 cups of milk into the potato mixture. Stir in the sour cream, chives, or green onions if using, 2 cups of the shredded cheese, and half of the cooked bacon.
Stir and cook until heated and cheese is melted. Top individual bowls with the remaining cheese and bacon pieces. Garnish with additional chives or green onions if desired!
Notes
*I like to leave the skin on, but peel if that is your preference