Chop the potatoes into chunks and prep the rest of the ingredients.
In a large soup pot or dutch oven, sauté onion, carrots, and celery in olive oil until translucent, about 4-5 minutes over medium-high heat.
Add the garlic cloves and continue cooking for another 1-2 minutes until it becomes fragrant.
Pour the chicken broth into the soup pot and bring it to a boil.
Reduce heat to a simmer, add in the potatoes, and cook for 20 – 30 minutes until the potatoes and vegetables are fork-tender.
Stir in the milk and cook for another 3-4 minutes until the soup is hot.
Remove from heat, and using a potato masher, mash the potato and vegetables until chunky. Or using a hand-blended puree the soup slightly. You want the soup to be smooth but also a little chunky.
Cook for another 5-10 minutes until it's lightly cooked down and thickened up.
Stir in sour cream, butter, salt, and pepper. Cook for another 5 minutes or until hot.
Ladle into bowls and serve with crumbled bacon, shredded cheddar cheese, and green onion.