Peel and cube potatoes. Chop onion and celery; mince garlic.
Melt butter in a Dutch oven; add onion, celery, and garlic, and sauté until tender. Stir in potato, asparagus, and next 5 ingredients; bring to a boil. Cover, reduce heat, and simmer 30 minutes; cool.
Process asparagus mixture in batches in a blender or food processor until smooth, stopping to scrape down sides; return mixture to Dutch oven. Add milk, and cook, stirring often, just until soup is thoroughly heated. Serve hot or chilled with a dollop of sour cream, if desired.