Start by preparing your vegetables: snap off the woody ends of the asparagus and cut the spears into 2-inch pieces. Peel and dice the potatoes into small cubes, and finely chop the onion and garlic.
Heat the olive oil in a large heavy-bottomed pot over medium heat until shimmering and fragrant. Add the chopped onion and garlic, sautéing until the onion becomes translucent and releases a sweet aroma, about 2-3 minutes.
Add the diced potatoes to the pot and cook, stirring occasionally, for 3-4 minutes until they start to soften and turn slightly golden. This enhances their flavor and prevents them from becoming pasty later.
Pour in the vegetable broth and bring the mixture to a gentle simmer. Cover the pot partially and cook for about 15 minutes, or until the potatoes are tender and easily pierced with a fork.
Add the asparagus pieces to the pot and continue simmering for another 5-7 minutes, until the asparagus is bright green and just tender. The aroma should be fresh and grassy.
Remove the pot from heat. Use an immersion blender or transfer the soup carefully into a standing blender and blend until smooth and velvety, about 1-2 minutes. Be cautious with hot liquids during blending.
Pour the blended soup back into the pot if using a standing blender. Stir in the heavy cream or coconut milk to add richness. Season with salt and pepper to taste, and warm gently over low heat for another 2 minutes.
Adjust the soup's consistency if needed by adding a splash of hot broth or water. It should be silky, smooth, and pourable, not too thick or thin.
Serve the soup hot, garnished with freshly chopped herbs, a drizzle of olive oil, or a squeeze of lemon for extra brightness. Enjoy the vibrant green color and comforting aroma.