Snap the woody ends off the asparagus stalks and tip them into a saucepan with the stock. Put on a low heat to very gently simmer. Meanwhile, cut off the tips of the asparagus, add to the stock for exactly 1 min. Scoop out with a slotted spoon and set aside. Finely slice the rest of the stalks into rounds.
Heat the oil and half the butter in a heavy, wide pan. Cook the onions gently for 5 mins until soft, stirring often. Add the chopped asparagus stalks and cook for 2 mins more. Add the rice and continously stir for a few minutes until it turns semi-transparent and makes a hissing sound.
Stir in the wine, if using – it will evaporate almost immediately. Reduce the heat to a gentle simmer. Add the stock, a ladleful at a time, stirring between each addition until it is absorbed, about 15 mins.
Try the rice – it should feel just cooked with a slight bite to it. Stir in the asparagus tips and any last dregs of stock and cook for 1 or 2 mins more. Remove from the heat and top with the remaining butter and most of the parmesan. Season generously, cover and leave for a few minutes to settle.
Give the risotto a thorough stir to incorporate the butter and cheese and serve straight away with the remaining parmesan for sprinkling over.