Josh Onomah scored the winner as Fulham boosted their hopes of making a push for automatic promotion in the second half of the Championship season with a 2-1 victory over second-placed Leeds United at Craven Cottage.
On a day when leaders West Brom were held to a 1-1 draw by Brentford, Fulham ended a three-match losing streak and moved back up to third, nine points behind Leeds, courtesy of their triumph.
Scott Parker's men could be overtaken by Sheffield Wednesday on Sunday if the Owls beat Bristol City, but victory over high-flying Leeds nevertheless represents a significant boost.
At the other end of the table, Barnsley climbed off the bottom with a first away win of the season, thanks to a 94th-minute winner from Patrick Schmidt at Millwall, while Derby County's disappointing campaign continued as they had Scott Malone sent off after four minutes and conceded two penalties in a 3-0 defeat at Reading.
TOP TWO DROP POINTS BUT STILL CLEAR AT CHRISTMAS
West Brom and Leeds may have both dropped points on Saturday, but they remain firmly on course to finish as the top two.
The table-topping Baggies are three points clear of Leeds and 12 ahead of Fulham after Darnell Furlong took just three minutes to cancel out Henrik Dalsgaard's opener for Brentford at The Hawthorns.
Aleksandar Mitrovic was predictably prominent in Fulham's victory. The Championship's top scorer converted an early penalty before Patrick Bamford pulled Leeds level. Onomah's decisive goal then came on the rebound after an attempted overhead kick from Mitrovic had been blocked.
Preston North End sit fourth after drawing 0-0 at Cardiff City in the day's early kick-off.
BARNSLEY REVIVAL CONTINUES
After beating QPR 5-3 last weekend, Barnsley made it back-to-back wins thanks to Schmidt's injury-time header at Millwall.
The Yorkshire club have leapfrogged Stoke City and Wigan Athletic at the foot of the table, although the latter could jump from 24th to 21st by beating Blackburn Rovers on Monday.
NO MALONE AT CHRISTMAS! RAMS SCUPPERED BY SCOTT'S EARLY RED
Derby have not won away since the opening week of the season and their hopes of ending that dismal run were swiftly dented at Reading when Malone was dismissed for bringing down Yakou Meite as the last man inside four minutes.
Charlie Adam converted the penalty, Lucas Joao added a second for Reading after the break and Meite converted a late penalty of his own on a miserable day for the Rams, who sit seven points above the bottom three in 17th.
Elsewhere, Swansea City snuck into the top six with a 1-0 win at Luton Town, Hull City thumped Birmingham City 3-0 and Huddersfield Town beat slumping Nottingham Forest 2-1 in a contest that saw managers Danny Cowley and Sabri Lamouchi involved in a furious confrontation. Naby Sarr's 95th-minute goal rescued a 2-2 draw for Charlton Athletic at QPR.