Jermaine Beckford returned from suspension to haunt his old club Scunthorpe as Leeds returned to the top six for the first time since November.
Substitute Bradley Johnson had a shot deflected into Scunthorpe's net by Grant McCann, but Gary Hooper scored twice to equalise before Beckford grabbed his second goal and Leeds' third.
Jonny Howson was sent off for a second bookable offence ten minutes from the end but Leeds held out.
Beckford, who was on loan at Scunthorpe two seasons ago, was back in the Leeds team in place of Luciano Becchio who served a one-match ban.
Jonathan Douglas moved from midfield to right-back in place of the injured Andrew Hughes, Neil Kilkenny coming into midfield for his first start since December.
Scunthorpe gave a debut to Kayode Odejayi, on loan from Barnsley, while skipper Cliff Byrne was back after suspension and Matthew Sparrow also returned.
Leeds winger Andy Robinson hobbled off after only 15 minutes, to be replaced by Johnson but Beckford pounced in the 32nd minute. Robert Snodgrass found Howson on the right and his pass enabled Beckford to shoot in off the inside of the near post from ten yards, though keeper Joe Murphy should have done better.
The advantage was doubled six minutes later when Snodgrass took a short free-kick to Johnson, whose low shot across the penalty area was deflected by Scunthorpe midfielder Grant McCann past keeper Joe Murphy.
The visitors were gifted a lifeline on 42 minutes. Rui Marques and Leeds keeper Casper Ankergren went for the same ball near the 18-yard line, enabling Hooper to toe-poke his shot into the unguarded net.
Scunthorpe equalised in the 52nd minute, Hooper racing away unchallenged to shoot past the unprotected Ankergren.
However, Beckford put Leeds back in front on 69 minutes, taking Douglas' pass before shooting powerfully from 12 yards.