In a large heavy bottom pot on medium heat, warm the butter and olive oil. Add onion and garlic and cook for 3-5 minutes, stirring frequently, until tender and then season with a pinch of salt and pepper.
Add asparagus to the pot, stir to combine with the onion and garlic mixture, and cook for 5 minutes.
Add broth, bring to a boil, then reduce to a simmer and cook for 10 minutes until asparagus is tender but still bright green in colour.
Once cooked, turn off the heat, using an immersion blender or in batches using a bar blender, puree the soup until smooth.
Once blended, add heavy cream and stir until well incorporated and the soup has a creamy texture. Taste and season with additional salt and pepper as needed.
The soup can be served immediately with a drizzle of heavy cream and a garnish of fresh dill or stored in an airtight container in the fridge for up to 5 days or in the freezer for 3 months.