In a large pot, melt butter over medium heat. Add in onions and cook for 7-8 minutes.
Stir in flour and cook for 2 minutes, gently add in the rest of the ingredients, except for the heavy cream.
Bring ingredients to a boil. Reduce heat to a low simmer and partially cover pot for 25-30 minutes, stirring soup occasionally.
After 25-30 minutes, turn off heat and allow soup to cool slightly for a few minutes.
Add soup, in batches, to a blender (you may have to move soup into a very large bowl for this process). Puree soup to a creamy consistency, return to the pan. Once all of the soup has been pureed, stir in heavy cream.
Pour the soup back into the pot, and cook over medium heat for 5 minutes.
Garnish with sour cream, cheese, and parsley flakes.
Serve with crispy bread or crackers.