4 slices thickly cut bacon
1 small onion, finely chopped
3 cloves garlic, minced
1 teaspoon salt
1 pound fresh asparagus, trimmed and cut into 1-inch pieces
3 pounds potatoes, peeled and quartered
2 cups low-fat milk
1 teaspoon ground black pepper
1/4 cup chopped fresh chives (optional)
Place bacon slices into a large skillet and cook over medium-high heat, turning occasionally, until evenly browned, about 10 minutes. Transfer bacon to a plate lined with paper towels to drain.
Stir onion, garlic, and salt into the hot skillet and cook and stir until fragrant, 2 to 3 minutes. Remove from heat.
Bring a large saucepan of water to a boil and stir in the asparagus; reduce heat to medium-low and simmer until asparagus are softened but still bright green, 5 to 8 minutes. Drain asparagus and set aside.
Place the potatoes into a large pot and cover with salted water. Bring to a boil over high heat, then reduce heat to medium-low, cover, and simmer until tender, about 20 minutes; drain.
Transfer cooked potatoes to a soup pot and mash them with a potato masher, leaving some potato chunks for texture.
Pour milk into a microwave-safe bowl and heat on high until the milk is hot, 1 to 3 minutes; stir milk occasionally as it heats. Pour hot milk into the potatoes and stir to combine.
Place soup over medium-low heat. Crumble bacon slices and stir bacon and the onion mixture into the soup; heat to a simmer and cook, stirring often, until soup thickens, 5 to 10 minutes. Sprinkle soup with chives to serve.