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.
Serve and enjoy!