Preheat the oven to 200°C. Rub the lamb with some oil, and season with salt and pepper. Put it in a roasting tray and cook for 20 minutes.
Meanwhile finely slice the onions, and roughly chop the garlic.Heat the oil in a pan. Fry the onion until soft and light brown. Add the garlic and fry for another minute, then add the balsamic vinegar and let it bubble for a few seconds. Add the wine, thyme and rosemary leaves, and cook for a couple of minutes.
Reduce the oven temperature to 180°C. Take the lamb out of the oven and put the onion mixture around it. Pour in the stock, and cover the tray with foil.
Roast the lamb for about an hour (15 minutes per 500g) if you like it pink in the middle, or longer (20 minutes per 500g) if you like it well-done.
Baste the lamb with the cooking juices every half hour. When it's cooked to your liking, transfer the lamb to a plate and rest, covered, for 20 minutes.
While the lamb is resting make the gremolata: Peel the lemon, roughly chop it. Put the peel, garlic rosemary and parsley into a small food processor and blend until you get a coarse mixture (alternatively finely chop everything together). Season to taste.
Serve the lamb with the onions and gremolata.