Wash and remove the tips from the asparagus. Bring the water to a boil in a small saucepan and simmer for 2 minutes, or until the asparagus is barley tender. Rince under cold water. Drain and set aside. Cut the asparagus stalks into 1-inche pieces. set aside.
Melt 1 tablespoon of butter in a large saucepan. Saute the onion and celery over medium heat until the onion is translucent (about 2-3 min.) add the uncooked asparagus stalks and the chicken or vegetable stock. Bring to a boil, reduce heat and simmer for 30 minutes.
Remove the pan from the heat and let soup cool! Using an emulsifer (hand-held "blender") or in batches in blender, blend until smooth.
Melt 3 tablespoons of butter in a large saucepan over medium heat. Add the flour and stir until blended. Slowly add the cream, stirring constantly. Reduce the heat and add the stock. Keep stirring until the soup has thickened. Do not let this boil! Just before serving add the reserved asparagus tips to heat through. Adjust salt and pepper to taste.
Garnish each serving with sour cream or a sprinkle of paprika.