Bring a large pot of water to a boil and fill a medium bowl with salted ice water.
Add the chopped asparagus to the boiling water and cook until just tender, about 4 minutes.
Remove the asparagus and place it immediately into the salted ice water to stop the cooking process.
Melt the butter in a large pot over medium heat.
Add the chopped onion and cook until softened, about 3 to 4 minutes.
Stir in the minced garlic and cook for another 30 seconds until fragrant.
Add the cooked asparagus, chicken broth, water, and a big pinch of salt.
Bring the mixture to a simmer and cook until the asparagus is tender, about 5 to 8 minutes.
Using a blender, puree the soup in batches until smooth.
Return the blended soup to the pot and stir in the heavy cream.
Season with salt and pepper to taste.
Heat the soup gently until it is warmed through.