Prepare the marinade by combining all of the marinade ingredients in a large ziploc bag.
Poke holes in the leg of lamb and insert a piece of the garlic that's cut into long strips, in each hole. This step is optional, but it gives the lamb a more garlicky flavor.
Place the leg of lamb in the ziploc bag, close it and toss it around so that the marinade goes all around the leg. Place the ziploc bag in the fridge and let it marinade overnight. I would recommend at least 12 hours to 2 or 3 days.
The next day, preheat your oven to 350 F degrees.
Place the quartered onions and smashed garlic in a large metal roasting pan then place the leg of lamb on top of the onions, fat side up. Discard the rest of the marinade. Add the chicken broth to the pan, the olive oil, drizzling some over the lamb, and the water.
Cover the pan with aluminum foil and place the roasting pan in the oven. Roast the leg of lamb covered for 4 hours. Remove the aluminum foil from the pan and using a ladle, spoon some of the pan juices over the lamb. Place the pan (uncovered) back in the oven and roast for an additional hour or until well browned.
Remove the lamb from the pan onto a platter.