Melt the butter in a large saucepan over medium-high heat. Add the onion and garlic, and cook, stirring until tender, about 5 minutes; season with salt and pepper. Add the asparagus and sauté 4 minutes. Add the chicken stock and bring to a boil. Reduce to a simmer and cook until the asparagus is very tender, about 30 minutes. Remove from the heat and let cool at least 5 minutes.
Working in batches if necessary, carefully transfer the soup to a blender, filling it no more than halfway. Keep the lid slightly ajar and puree on high speed until smooth. Return the soup to the saucepan, stir in the sour cream and season with salt and pepper. Transfer to bowls, dust with the paprika and serve.