Cut asparagus spears into 1-inch pieces.
In a large stockpot, melt the butter.
Add onion and sauté until translucent.
Add asparagus, salt, and pepper, and cook, stirring frequently, for 8-10 minutes until asparagus begins to soften.
Add garlic, stir, and cook one minute more.
Add chicken broth and bring the soup to a boil.
Once the soup boils, reduce to a simmer and cook for half an hour.
Blend soup with an immersion blender (or carefully in batches in a blender) until completely smooth.
Add optional toppings and serve immediately.