Trim the woody ends from the asparagus and chop the tender parts into 2-inch pieces. Peel and dice the potatoes into even chunks.
Heat olive oil in a large saucepan over medium heat until shimmering. Add the sliced onion and minced garlic, cooking until fragrant and translucent, about 5 minutes, with the onion turning slightly golden.
Add the diced potatoes to the saucepan, stirring to coat them with the aromatic oil. Cook for about 2 minutes, allowing the edges to turn a light golden.
Pour in the vegetable stock and bring the mixture to a gentle simmer. Cover partially and cook for 15 minutes, or until the potatoes are tender when pierced with a fork.
Stir in the chopped asparagus and continue simmering uncovered for another 4-5 minutes, until the asparagus is bright green and just tender.
Remove the saucepan from heat. Using an immersion blender, blend the soup directly until smooth and velvety. Alternatively, transfer in batches to a blender and blend until smooth.
Stir in the lemon juice and heavy cream or coconut milk, then season with salt and pepper to taste. Blend again briefly to combine everything smoothly.
Taste the soup and adjust seasoning as needed. Serve hot, garnished with a few asparagus tips or a drizzle of olive oil for a beautiful finish.