In a large pot, heat the olive oil over medium heat.
Add the chopped onion and garlic, and sauté until the onion is translucent.
Add the asparagus and sauté for another 5 minutes.
Pour in the chicken or vegetable broth and bring to a boil. Reduce heat and simmer until the asparagus is tender, about 15 minutes.
Using an immersion blender, puree the soup until smooth. Alternatively, carefully blend in batches in a stand blender.
Stir in the heavy cream and season with salt and pepper to taste. Heat through but do not boil.
Serve hot, garnished with asparagus tips or a swirl of cream, if desired.