Cut off the asparagus tops and reserve. Chop the stems into pieces, discarding the woody bits. (If the stems are really thick and tough looking, peel them first.) Heat the oil and butter in a sauté pan. Add the stem pieces and cook five minutes. Add the garlic and the asparagus tips. Pour over 1/4 cup/60 ml water, season with salt and pepper, and cook until tender, 5 to 15 minutes, depending on the asparagus. (If you like, you can add a sprig of rosemary to the dish with the garlic and tips, then remove it at the end).
Bring the stock to a simmer and set aside. Heat 2 tablespoons of the butter in a saucepan and cook the onion and shallot until soft, stirring with a wooden spoon. Add the rice and stir until translucent, about four minutes. Stir in the wine and reduce until almost dry. Add a ladle of stock and cook, stirring, until it disappears. Continue, a ladle at a time, until the rice is tender and creamy, about half an hour.
Remove from the heat and stir through the asparagus, remaining tablespoon of butter, lemon zest, and half the cheese. Taste and adjust the seasoning. Spoon into bowls and scatter over the remaining cheese to serve.