Sky Bet Championship leaders Leeds struck twice late on to come from behind to beat Blackburn 3-2 and extend their advantage at the top of the table.
The home side went in front after 33 minutes through an own goal by Rovers' defender Derrick Williams.
Blackburn equalised at the start of the second half from Charlie Mulgrew's penalty.
Mulgrew looked to have won it with a free-kick in he 89th minute, but Kemar Roofe, who scored a dramatic late winner at Aston Villa, equalised in stoppage time.
Roofe struck again in the fourth minute of added time to send Elland Road into delirium.
There was also late, late drama at Carrow Road where second-placed Norwich fought back from 3-0 down to draw 3-3 against Nottingham Forest and extend their unbeaten run to 12 matches.
Matty Cash put Forest ahead against the run of play in first-half stoppage time and Jack Robinson made it 2-0 on 64 minutes.
When Cash added another 10 minutes later, there seemed no way back for Daniel Farke's side.
Mario Vrancic, though, reduced the deficit on 77 minutes, before substitute Onel Hernandez struck twice in some seven minutes of stoppage time to secure a remarkable draw.
Leeds are three points clear of the Canaries, who are three ahead of West Brom after their 2-0 home win over Wigan.
Jay Rodriguez scored a goal in each half for the improving Baggies.
Sheffield United also boosted their own promotion hopes with a 3-1 home win over Derby.
The Blades went in front five minutes before half-time through Billy Sharp.
On-loan Liverpool winger Harry Wilson equalised early in the second half with a fine free-kick before David McGoldrick put the home side back in front again in the 64th minute.
Substitute Leon Clarke headed a late third for Sheffield United, who moved to fourth.
Middlesbrough slipped to a 1-0 home defeat by managerless Sheffield Wednesday following a goal from midfielder Adam Reach in the 20th minute against his old club.
Birmingham kept up their push for the top six with a 2-0 home win over Stoke.
The Blues took the lead just before half-time through Jacques Maghoma, with substitute Omar Bogle adding a late second.
At the other end of the table, bottom club Ipswich lost 3-0 at QPR.
Pawel Wszolek and then Joel Lynch's header made it 2-0 after 34 minutes. Nahki Wells added QPR's third with 16 minutes left.
Bolton beat Rotherham 2-1 at home to move within a point of the visitors.
Sammy Ameobi gave Bolton the lead after 33 minutes, but Rotherham soon hit back when Will Vaulks headed in. Gary O'Neil restored Bolton's advantage in the 65th minute.
Millwall got their first win since the end of October with a 1-0 home win over Reading, who finished with nine men in a first game for new boss Jose Gomes.
Jed Wallace put the Lions in front with a free-kick in the eighth minute.
The Royals were then reduced to 10 men when defender Tyler Blackett was shown a straight red, as was midfielder Leandro Bacuna with two minutes left.
Brentford came from behind to draw 1-1 at Bristol City.
Right-back Eros Pisano headed the home side in front in the 20th minute. Neal Maupay equalised in the 53rd.
Hull won 2-1 at Preston.
Jackson Irvine headed the visitors in front after half an hour before Preston midfielder Alan Browne equalised two minutes into the second half.
Irvine struck a late winner in the 80th minute.
Aston Villa won 1-0 at Swansea, where substitute Wilfried Bony saw a stoppage-time penalty saved.
Conor Hourihane headed Villa in front in the 65th minute, which was enough for victory, but only after some late heroics from goalkeeper Orjan Nyland.