Trim the ends of the asparagus (snap or cut as you prefer) then cut the asparagus into small lengths. Separate the tips from the other stems. Finely dice the onion and garlic.
Heat the butter and olive oil in a wide pan over a medium heat and add the onion. Cook, stirring regularly until softened, around 3-4 mins, then add the garlic. Cook for a minute more, stirring now and then. At the same time, warm the stock on another burner so that it's warm, ready for when you need it.
Add the rice and cook briefly to ensure the grains are well coated in the oil/butter mixture. Add the wine and deglaze - stir and scrape the bottom of the pan to remove and browning and mix into the rice (it adds flavor!). Cook and stir so the liquid is largely gone.
Add the stock a bit at a time (around ½ to 1 cup at a time - you want to just cover the rice), adding more as the last is absorbed. Add a little freshly ground pepper with the first of the stock. Stir now and again as it cooks - you don't need to stir constantly, but do stir here and there so the rice moves around and doesn't just cook underneath but not on top, for example, or stick.
Once you have nearly added all the stock, check a piece of rice to see if it is almost cooked. If not, add a little more stock than in the recipe. If it seems almost cooked (so al dente), add the last of the stock along with the asparagus stems. Press the asparagus under the liquid to cook. After a minute or two, add the asparagus tips and the peas and press under. Stir now and then.
Once the last of the stock is absorbed, remove the pan from the heat. Add the lemon juice, zest and grated parmesan and stir through gently so everything mixes but you don't break anything up. Serve warm.
Video
Notes
I highly recommend using homemade stock, if at all possible, as well as freshly grated parmegiano reggiano for this. Note video and photos show a half quantity being made, but method is the same.