Leo Bonatini scored twice as Wolves survived a late scare to beat Preston 3-2 at Molineux and cling onto top spot in the Sky Bet Championship.
The hosts looked set to cruise to a second successive win after Bonatini built on Ivan Cavaleiro’s first half opener with a 59th minute penalty and his second from close-range five minutes later.
But the visitors reduced the deficit within a minute through Jordan Hugill, before a Conor Coady own goal 12 minutes from time led to a frantic finale in which Preston’s Alan Browne was sent off.
Cardiff stayed second after a late Joe Ralls penalty proved enough to give Neil Warnock’s men a hard-fought 1-0 win at Middlesbrough.
Boro striker Adama Traore was punished for a needless late challenge on Nathaniel Mendez-Laing and Ralls stepped up to fire past Darren Randolph with six minutes left.
Sheffield United stayed level on points with the Bluebirds after a 2-1 win over struggling Reading at Bramall Lane.
Paul Coutts marked his return from injury by firing the Blades in front after 19 minutes and Billy Sharp’s fifth goal of the season made it 2-0 before half-time.
Roy Beerens reduced the deficit for Reading six minutes from time but it was not enough to prevent the Royals sliding to another defeat.
Leeds bounced back from three successive losses in style and ended Bristol City’s run of 12 games unbeaten with an emphatic 3-0 win at Ashton Gate.
Samuel Saiz struck twice in the first 14 minutes to get the visitors off to a flying start and a Pierre-Michel Lasogga header completed an impressive performance.
Both sides were reduced to 10 men late on when a clash between Gaetano Berardi and Matty Taylor resulted in both players receiving straight red cards.
At the bottom there was more woe for Sunderland who blew a two-goal lead to draw 3-3 at Brentford and extend their winless run to 11 games.
The visitors responded well to Nico Yannaris’ early opener for the hosts, with Lewis Grabban equalising and a Daniel Bentley own goal putting Simon Grayson’s men in control.
When Grabban hit his second from the penalty spot on the stroke of half-time it looked like the Black Cats’ fortunes were finally turning – but late goals from Florian Jozefzoon and Neal Maupay earned the Bees a point.
Bottom club Bolton were denied a second straight win as Idrissa Sylla’s 78th minute strike salvaged a 1-1 draw for Queen’s Park Rangers at the Macron Stadium.
The hosts, fresh from last week’s morale-boosting win over Sheffield Wednesday, had led through Darren Pratley’s 22nd minute header.
Derby capitalised on the fourth minute sending-off of Sheffield Wednesday’s Glenn Loovens to cruise to a 2-0 win at the iPro Stadium.
Matej Vydra scored a fifth minute penalty which resulted from Loovens’ dismissal, and Bradley Johnson fired into the top corner to complete victory four minutes from time.
John Terry scored his first goal for Aston Villa in a 2-1 home win over Fulham. Stefan Johansen equalised Terry’s header before half-time, but Albert Adomah won it early in the second half.
Fraizer Campbell’s 78th-minute effort gave Hull a 1-0 win at Barnsley while goals from Barry McKay (58) and Eric Lichaj (78) saw Nottingham Forest beat Burton 2-0 at the City Ground.