Rinse asparagus, snap off tough ends, and chop into 1-inch pieces.
Heat butter/oil in a pot over medium heat. Add onions and garlic, sauté until soft (3-4 mins).
Add asparagus pieces (reserve a few tips for garnish) and broth. Bring to a boil, then simmer for 10-12 mins until tender.
Carefully transfer the mixture to a blender (or use an immersion blender) and purée until smooth.
Return soup to the pot, stir in cream (if using), lemon juice, salt, and pepper. Simmer 2-3 mins.
Ladle into bowls, top with reserved asparagus tips, parsley, and a drizzle of cream.