Republic of Ireland midfielder Glenn Whelan missed a penalty deep into injury time in a Championship thriller, as 10-man Aston Villa were left reeling after a 3-3 draw with Preston.
Jonathan Kodjia's header from Ahmed Elmohamady's cross gave Villa a 26th-minute lead and they doubled their advantage 11 minutes later when Tammy Abraham slotted home.
Villa were reduced to 10 men after 54 minutes when James Chester was shown a straight red card for bringing down Lukas Nmecha in the penalty area. Daniel Johnson sent the goalkeeper the wrong way to offer Preston hope.
Preston, with Alan Browne in the middle of the park, piled forward and equalised in the 79th minute when Paul Gallagher's low curling free-kick crept in.
They took the lead four minutes from time when a Gallagher corner was headed in by Louis Moult, but Villa were not done, and Yannick Bolasie - on as a substitute - poked home in a crowded penalty area to make it 3-3.
Villa were awarded a penalty deep into time added on when Johnson's arm connected with Birkir Bjarnason, but Chris Maxwell was the hero as he saved Whelan's spot-kick.
One Villa fan, overcome with frustration, launched a cabbage at manager Steve Bruce at the final whistle. It was that kind of night.
FULL TIME: Back to winning ways for The Whites, as Tyler Roberts 25 yard strike seals the win against Hull
— Leeds United (@LUFC) October 2, 2018
0-1 | #LEEHUL pic.twitter.com/ZziImu46nI
Tyler Roberts scored the only goal of the game as Leeds moved back to the top of the table with a 1-0 win at Hull.
Marcelo Bielsa's men dominated the first half without finding the opening goal, but that arrived six minutes into the second when Roberts fizzed a low shot from 25 yards into the bottom corner for his third goal in five league matches.
Nouha Dicko came closest to an equaliser for the home side, but his flicked effort at goal was saved by Bailey Peacock-Farrell.
Two goals in four first-half minutes earned Middlesbrough victory at Ipswich and saw them move up to second.
Mo Besic curled in the opener at the second attempt in the 12th minute and Stewart Downing doubled their lead shortly afterwards, finishing a driving run with a thumping strike.
Daniel Ayala had a header cleared off the line by Cole Skuse, while at the other end Trevoh Chalobah's low shot was pushed away by Ireland stopper Darren Randolph.
Brentford were held to a 1-1 draw by 10-man Birmingham at Griffin Park.
Blues took the lead after 26 minutes when a Jota corner was headed in by Michael Morrison, but Brentford were back on level terms before the break through Josh McEachran's free-kick.
Birmingham's Maikel Kieftenbeld was dismissed for an off-the-ball incident involving Neal Maupay in the 66th minute and incensed boss Garry Monk was sent to the stand for his reaction.
Stoke eased to a third win of the season with a 2-0 success at home to Bolton.
Defender Bruno Martins Indi was left unmarked at a corner to nod in the opening goal after 10 minutes.
TABLE: Wins on the road for @LUFC and @Boro take them above @WBA, who play tomorrow.@pnefc's point at Villa Park closes the gap at the foot of the Sky Bet Championship table. pic.twitter.com/0dbCZfKEs2
— Sky Bet Championship (@SkyBetChamp) October 2, 2018
Josh Magennis thought he had equalised, but his header was ruled out for holding Ashley Williams, and Tom Ince wrapped up the points with a well-taken second shortly afterwards.
Toni Leistner's scrambled effort snatched QPR a 1-0 win at Reading, while Wigan and Swansea played out a goalless draw at the DW Stadium.
Meanwhile in League One, Ronan Curtis curled home the only goal of the game in first-half stoppage time as Portsmouth extended their lead at the top of the tree with a 1-0 win at Coventry.
Curtis's strike from Brett Pitman's lay-off proved enough for Pompey on a night which saw their six closest challengers at the start of the evening fail to pick up wins.
Ex-Derry City man Curtis has been in brilliant form for Pompey, recently getting called into Martin O'Neill's Republic of Ireland squad for the friendly against Poland.