Heat a large skillet over medium high heat. Add bacon and cook until brown and crispy, about 6-8 minutes. Transfer to a paper towel-lined plate; set aside.
Melt butter in a large pot or Dutch oven over medium heat. Whisk in flour until lightly browned, about 1 minute. Gradually whisk in milk, and cook, whisking constantly, until slightly thickened, about 1-2 minutes. Stir in potatoes and green onions.
Bring to a boil; reduce heat and simmer until potatoes are tender, about 15-20 minutes. Stir in cheese, sour cream, salt and pepper, to taste. If the soup is too thick, add more milk as needed until desired consistency is reached.
Serve immediately, garnished with green onion, cheese and bacon, if desired.