Melt the unsalted butter in a large soup pot and add the sliced onion. Cook, on medium heat, for a few minutes until the onion begins to soften
Stir in the all-purpose flour and cook for one minute.
Stir in the chicken or vegetable stock.
Add the potatoes, asparagus, salt and ground black pepper.
Bring to a boil, cover, reduce the heat to low and cook for approximately 20 minutes or until the potatoes are tender.
Puree the soup to a smooth consistency. This can be done with a hand (immersion) blender or a traditional blender. If using a regular blender, work in batches so as not to overfill the canister.
Return the pureed soup to the pot and stir in the milk, fresh dill and lemon zest.
Serve hot with a sprinkling of grated Parmesan.