Preheat oven to 220°C and layer onions, garlic, and rosemary in a roasting pan. Season lamb with salt, pepper, and olive oil, then place on top of onion mixture.
After 4 hours, remove the lid, add balsamic vinegar, increase heat, baste every 5 minutes for 30 minutes, then remove, skim excess oil, and let the lamb rest with the remaining liquid as sauce.