A 95th-minute goal from Kemar Roofe fired Leeds back to the top of the Sky Bet Championship table, coming from 2-0 down to beat Aston Villa in a thrilling encounter.
The hosts opened the scoring in the fifth minute as Tammy Abraham scored his ninth goal in seven games before a great Conor Hourihane strike doubled Aston Villa's lead 12 minutes later and put them 2-0 ahead at the break.
But Leeds forward Jack Clarke scored his first senior goal 11 minutes after the restart to get the visitors back into the game before a Pontus Jansson header levelled things up soon afterwards.
The game looked to be heading for a draw but five minutes into added time, a poor clearance from Ahmed Elmohamady saw Roofe sweep home and send Leeds back to the top of the table, a point above Norwich.
Aston Villa took the lead inside five minutes. An Alan Hutton throw-in was flicked on by Yannick Bolasie into the path of Hourihane, who slotted it into the path of John McGinn - and, although he could not sort his feet in time, Abraham was waiting for the loose ball and slotted home.
Aston Villa: Nyland (6), Chester (6), Hutton (7), Elmohamady (5), Bree (5), Whelan (6), Hourihane (7), McGinn (6), Bolasie (6), Kodjia (6), Abraham (6).
Subs used: El Ghazi (5), Bjarnason (5), Hogan (4).
Leeds: Peacock-Farrell (6), Ayling (6), Davis (5), Jansson (7), Phillips (6), Klich (6), Harrison (5), Alioski (7), Hernandez (6), Forshaw (6), Roofe (6).
Subs used: Clarke (7), Shackleton (5).
Man of the match: Pontus Jansson.
It seemed to galvanise Leeds as they saw the better of the play afterwards, but were dealt a second blow in the 17th minute. Jack Harrison gave the ball away to Elmohamady in the middle of the park, with the Aston Villa defender in turn finding Jonathan Kodjia.
He got away from Leif Davis and Adam Forshaw before picking out Hourihane at the top of the area, with the Irishman curling the ball delightfully into the back of the net.
Leeds should have been awarded a penalty in the 21st minute, but their calls went unheeded by the officials. A corner was delivered by the visitors and as Jansson went to head it towards goal, he was held back by Hutton. Referee Andrew Madley waved away Leeds' claims, which looked the wrong decision.
Leeds brought in Luke Ayling and Jack Harrison for Jamie Shackleton and Lewis Baker while James Bree and Jonathan Kodjia came into the Aston Villa XI for Axel Tuanzebe and Lewis Baker. Barry Douglas was taken ill just before kick off for Leeds and was replaced by 18-year-old Leif Davis, who made his first-team debut.
Clarke came on as a half-time substitution for Harrison and scored 11 minutes later. Pablo Hernandez found the 18-year-old on the left-hand side and he darted into the area - getting past Elmohamady - before sweeping home for his first senior goal.
Five minutes later Leeds were level. Hernandez delivered a sweeping corner which Jansson headed home as he rose highest in the pack.
The second half continued to be packed full of chances. Leeds had another big penalty shout in the 64th minute as a cross back into the area from Roofe hit the raised hands of Glenn Whelan, but the calls were waved away again by referee Madley.
Aston Villa went close at the other end as a Birkir Bjarnason corner pinged off the foot of Forshaw, forcing a fantastic point-blank save from Leeds goalkeeper Bailey Peacock-Farrell.
But Leeds struck the hammer blow with mere seconds to play. Ezgjan Alioski cut in from the right flank before whipping a cross towards the back post. Elmohamady's header away was weak and down into the floor, with the loose ball falling to Roofe who fired home and snatched the points for Leeds.
Dean Smith: "It was poor defending for their goals. I think that has been a problem we've had for a while and it keeps rearing its ugly head. If I'm honest, I thought they were better than us today. I didn't think we were good without the ball, we've been better, and I thought we dropped too deep and never really got our press going at all. But with the quality of players we've got going forward, we can score goals.
"That's my first ever defeat at Villa Park and I don't want it to happen too many times because it doesn't feel very good, that's for sure.
"I'm looking at the next game and to win three points and see where we are. We're halfway through the season now and not in a position where we expect to be. We'll try really hard to get some wins and get an unbeaten run going. I think Leeds shaded the game today but I don't think we deserved to lose."
Marcelo Bielsa: "It was a very beautiful game. We played against very important strikers and it was very difficult for us to neutralise them, but at the end of the day, I think we deserved to win. Our players dared to play, they took many risks and I think they got the response they deserved.
"I thought that we could win the game after the first 15 minutes when I saw that we could control their offensive players. In the first 15 minutes of both halves, it was difficult for us to control the game but then we gave good solutions to what happened in both boxes and we went well from one box to another."
Man of the match - Pontus Jansson
He does not score very often but when he does, Jansson will probably score against Aston Villa. He netted his third goal in four appearances against the Midlands side and contributed all over the pitch.
Jansson popped up everywhere, attracted to the ball like a magnet any time a cross was played in as Villa peppered the area and of course, helped his side up front. His equalising goal with a bullet header and the big Swede was a real handful for Aston Villa to deal with at times, especially during set pieces.
Both teams are in action on Boxing Day, with Aston Villa travelling to Swansea while Leeds host Blackburn. The games will also be available live on the Sky Sports Football red button.