Brighton returned to the top of the Sky Bet Championship after coming from behind to beat Fulham while Newcastle suffered a shock defeat at Blackburn.
The Seagulls' unbeaten run, which now stands at 18 matches, looked to be ending when Lucas Piazon gave the Cottagers the lead 10 minutes into the second half, with Brighton goalkeeper David Stockdale having earlier denied his former club by saving a first-half penalty from Stefan Johansen.
But Brighton hit back with two goals in two minutes as Tomer Hemed levelled from the penalty spot before Lewis Dunk headed the 75th-minute winner.
Charlie Mulgrew was again the scourge of Newcastle as his goal gave struggling Blackburn a superb 1-0 win at Ewood Park.
His precise free-kick in the 74th minute was his second goal of the season, with his first coming in the 1-0 win at St James' Park, and a number of stunning saves from Jason Steele denied Newcastle, who also had two goals disallowed and struck the woodwork.
Reading remain third but are now six points behind Newcastle after they came from behind to win 3-2 at Bristol City.
Tammy Abraham's brace, the second coming from the penalty spot, put City in control but Liam Kelly gave Reading a lifeline before Yann Kermorgant struck twice late on to complete the comeback.
Huddersfield claimed their fifth win in six matches with a 1-0 triumph at Wigan thanks to an 80th-minute strike from Nahki Wells and Leeds beat Rotherham 3-0 at Elland Road.
The Millers had the better of the first half but Kyle Bartley's far-post header from a Pablo Hernandez cross early in the second half broke the deadlock and Chris Wood's doubled sealed the win.
Nelson Oliveira's hat-trick guided Norwich to an emphatic 3-0 win over Derby that eased the pressure on manager Alex Neil.
The Canaries had taken just seven points from their previous 11 games but Oliveira completed the perfect treble with a goal each with his left foot, right foot and head.
Joe Ralls scored the only goal as Cardiff edged out Aston Villa 1-0 while Tom Clarke's goal in first-half stoppage time was enough for Preston to beat Burton.
Birmingham's poor form under Gianfranco Zola continued as they slumped to a 3-1 defeat at home to Brentford.
They took a first-half lead through Lukas Jutkiewicz but Scott Hogan equalised before missing a penalty. That did not prove costly though as David Davis deflected a Ryan Woods free-kick past his own goalkeeper and substitute Nico Yennaris added a late third.
Conor Hourihane hit a superb 88th-minute winner to maintain Barnsley's play-off push with a 1-0 win at Nottingham Forest but South Yorkshire rivals Sheffield Wednesday had to settle for a goalless draw at home to Wolves.
Pawel Wszolek scored a late QPR winner for the second game running as they beat Ipswich 2-1 at Loftus Road.
Idrissa Sylla's first-half opener for Rangers was cancelled out by Tom Lawrence's stunning 25-yard equaliser before Wszolek struck with seven minutes remaining.