Leeds twice came from behind to beat Millwall 3-2 and jump above Sheffield United into the automatic promotion places after the Blades lost to Bristol City by the same scoreline.

Both sides were bidding to cut the gap on leaders Norwich.

But Leeds fell behind early on as Ben Thompson gave Millwall the lead before Patrick Bamford missed a penalty for Leeds.

Pablo Hernandez equalised after 34 minutes but a second penalty of the match went Millwall's way as Liam Cooper brought down Ben Marshall, who got up to bury the opportunity from the spot.

Luke Ayling (71) equalised before Hernandez struck again seven minutes from time to seal a crucial win.

Luke Ayling celebrates victory after the final whistle (Action Images)

Sheffield United began the day in second, a point clear of Leeds, but their 10-match unbeaten run was ended by Bristol City thanks to Andreas Weimann's hat-trick.

Billy Sharp fired United ahead after just six minutes with his 23rd goal of the season.

Weimann equalised for the visitors, flicking in Jack Hunt's cross.

On-loan Aston Villa striker Scott Hogan grabbed his first Blades goal to fire Chris Wilder's side back in front with 19 minutes remaining, but Weimann notched again to level before sealing his first career hat-trick to damage the Blades' automatic promotion hopes.

Aston Villa beat Blackburn 2-1 to secure a fifth successive win and strengthen their grip on a play-off spot.

Tammy Abraham's 22nd of the season gave Villa an eighth-minute lead, the 21-year-old tapping in Anwar El-Ghazi's cross from close range.

Tyrone Mings doubled their advantage just after the hour. Amari'i Bell pulled one back for Blackburn but Rovers have now won just one of their last 10.

Tammy Abraham put Aston Villa ahead after eight minutes (Action Images)

Play-off-chasing Preston were beaten 2-1 at relegation-threatened Reading.

The Lilywhites were seeking a fourth win in a row but fell behind on the half-hour mark as Modou Barrow pulled the ball across the six-yard box to Yakou Meite, who picked out the top corner.

And Barrow was on the scoresheet himself six minutes later, which proved to be the winner despite Jayden Stockley's added-time goal for Preston.

Martyn Waghorn grabbed a hat-trick as Derby stretched their unbeaten run to four matches and moved into the play-off places with a thumping 6-1 win over Rotherham.

The striker's penalty fired Frank Lampard's side in front after 13 minutes, before Bradley Johnson and Waghorn again made it 3-0 at the break.

Mason Mount and Duane Holmes notched either side of Richard Wood's consolation to make it 5-1, before Waghorn completed his treble from the spot.

Scott Hogan celebrates scoring for Sheffield (Getty)

Kamil Grosicki's double helped Hull to a first away win in seven league games and stretched rock-bottom Ipswich's winless run to 12.

His first came after 14 minutes, slotting in from Fraizer Campbell's pass, before the 30-year-old was set up by Jarrod Bowen to grab his second after 49 minutes.

Bolton picked up just a fourth league win since September to move within five points of safety and worsen QPR's relegation fears with a 2-1 win.

Wanderers took a shock lead as Will Buckley bundled in on 35 minutes and Callum Connolly made it 2-0 after the break.

Nahki Wells gave QPR hope nine minutes from time, but Rangers are just eight points clear of the drop zone having won two of their last 16 league games.

Stoke drew their seventh game in eight as their clash with Sheffield Wednesday finished goalless, Nottingham Forest came from behind to claim a 2-1 win at home to Swansea while Wigan and Brentford was also goalless.