Leeds boosted their Champions League hopes with a vital three points away to Aston Villa.
The visitors had the better of the first half and Mark Viduka scored his 16th goal of the season just before the half-hour mark to secure victory.
It was the big Australian's fourth in five matches and he formed a lively partnership with Robbie Keane, making a rare start in place of Robbie Fowler.
After a poor first 45 Villa improved in the second half, but although they created several good late chances Leeds held out for an important victory.
Villa produced the first effort of the match when Thomas Hitzlsperger tried his luck from 20 yards, but a minute later Leeds had the ball in the net.
Keane converted Alan Smith's cross but the Republic of Ireland international had strayed offside and the goal was disallowed.
Juan Pablo Angel forced Nigel Martyn to save by his left-hand post with a sweetly-struck 20-yard half-volley in the 12th minute, but Leeds were looking the more likely to make the breakthrough.
The big Australian found himself one-one one with Villa keeper Peter Enckelman, playing in place of Manchester City-bound Peter Schmeichel, but Viduka shot just wide.
However, he made no mistake the next time he got a sight of goal.
Once again Keane laid on the chance and Viduka turned superbly past Mark Delaney before flicking the ball past Enckelman from eight yards.
Villa manager Graham Taylor must have had some choice words for his team during the break because Villa looked much more positive when they came out for the second half.
Again it was the young German Hitzlsperger who had the first effort of the half, before Peter Crouch spurned a good chance on the hour.
The lanky striker flicked a long through-ball over Mills but put a side-footed half-volley over the bar.
Delaney and George Boateng then combined to create a good opportunity that Ian Taylor just failed to connect with.
Ian Harte drilled a free-kick into the wall as Leeds managed a rare sortie down field, before Villa brought on Darius Vassell and Steve Stone as they attempted to pile on the pressure.
The hosts launched a late bombardment on the Leeds goal and Nigel Martyn had to make three important saves to preserve Leeds' advantage.
Poor control from Stone allowed Martyn to make his first stop and he then saved from Jloyd Samuel and Hitzlsperger.
Delaney saw a goal-bound shot deflected just wide as Villa threw everything at the visitors and Martyn had to throw the ball behind as he fell back into his goal, but Leeds just managed to hang on for the win.
Aston Villa: Enckelman, Delaney, Mellberg, Staunton, Barry,
Kachloul (Samuel 46), Boateng (Stone 65), Taylor, Hitzlsperger,
Crouch, Angel (Vassell 65).
Subs Not Used: Myhill, Balaban.
Booked: Angel, Taylor.
Leeds: Martyn, Kelly, Mills, Matteo, Harte, Smith, Batty,
Bakke, Bowyer, Keane, Viduka.
Subs Not Used: Robinson, Wilcox, Johnson, Fowler, Richardson.
Booked: Batty, Bowyer, Mills.
Att: 40,039
Ref: B Knight (Orpington).