Watch match highlights from every Sky Bet Championship game, as WBA extended their lead at the top of the table, following Leeds' defeat at Fulham.
Sky Bet Championship results
- Cardiff 0-0 Preston
- Fulham 2-1 Leeds
- Huddersfield 2-1 Forest
- Hull 3-0 Birmingham
- Luton 0-1 Swansea
- Millwall 1-2 Barnsley
- QPR 2-2 Charlton
- Reading 3-0 Derby
- WBA 1-1 Brentford
Cardiff 0-0 Preston
Cardiff and Preston played out a dull 0-0 draw that did little to strengthen either club's Sky Bet Championship promotion chances.
Opportunities were at a premium in the Welsh capital as both sides seemed content to take a point.
North End looked the more likely team to find the breakthrough during a dull first half that contained just a single shot on target. Sean Maguire hit the side-netting twice, before setting up a clear-cut chance in the 24th minute.
His disguised through ball put Billy Bodin clean through on goal, but Bluebirds goalkeeper Neil Etheridge reacted to deny the Preston winger from close range.
Cardiff broke downfield moments later and almost took the lead against the run of play after Bacuna drove across halfway with the ball.
He lost possession on the edge of the area but the ball broke free for Lee Tomlin, who dragged a low shot inches wide
Fulham 2-1 Leeds
Josh Onomah's first goal since Christmas 2017 rekindled Fulham's automatic promotion hopes with a crucial 2-1 win over Leeds at Craven Cottage.
The midfielder's clinical finish on the hour moved Scott Parker's side to within nine points of their opponents and halted Leeds' 11-game unbeaten run.
Fulham climbed to third thanks to the win, courtesy of Aleksandar Mitrovic's seventh-minute penalty and Onomah's second-half strike, either side of Partick Bamford's 10th goal of the season.
Leeds are second, three points behind leaders West Brom who drew at Brentford.
The first goal was always going to be vital and after Helder Costa had sent a first-minute volley into the arms of Marek Rodak, it went to the home side.
There seemed little danger as a cross came into the Leeds area, but Ben White needlessly pushed Bobby Decordova-Reid in the back. The striker fell and Fulham were awarded a penalty.
Leeds keeper Kiko Casilla guessed the right way and even managed to palm away Mitrovic's spot-kick, but unfortunately for the Leeds keeper, the ball struck the inside of the post before rebounding over the line.
A tetchy affair then saw four yellow cards issued in the final 25 minutes of the first half as both sides demonstrated the importance of the result for their respective seasons.
Leeds boss Marcelo Bielsa clearly felt it, too, bringing on Eddie Nketiah for Costa at half-time. Within 10 minutes, the substitute had played a crucial role in Leeds' equaliser, turning on a smart pass from Ezgjan Alioski, a third-minute replacement for the injured Pablo Hernandez.
Nketiah's shot ought to have been held by Rodak but was pushed instead into the path of Bamford, who tapped the ball into an empty net.
After Ivan Cavaleiro had forced a flying save from Casilla with a 20-yard rising shot, Mitrovic caused problems at a Fulham corner, attempting a bicycle kick that was blocked.
The ball rolled out to Onomah, who directed a fierce shot into the corner of the Leeds net.
Huddersfield 2-1 Forest
Steve Mounie's first league goal since February helped Huddersfield upset promotion chasers Nottingham Forest 2-1 in a fiery encounter at the John Smith's Stadium.
Mounie's second-half header and skipper Christopher Schindler's first-half opener did the damage as the battling Terriers stretched their unbeaten run to three games.
Schindler's second goal of the season and first goal for nearly two months gave the hosts the perfect start.
French hitman Mounie, making only his third start of the season, made sure of the points with his clinical finish from Karlan Grant's corner.
Joe Worrall's first goal for Forest, a fine near-post header, gave the visitors hope in the 74th minute, but the hosts held on for three welcome points in their battle to avoid the drop.
The contest boiled over at half-time between Town boss Danny Cowley and Forest manager Sabri Lamouchi following a fiery first half.
The pair were embroiled in a heated exchange as they left the pitch for half-time, with players from both sides rushing down the tunnel as an ugly melee ensued.
But it was Cowley who had the last laugh as his battling outfit did their relegation fight no harm at all.
Hull 3-0 Birmingham
Hull claimed a third consecutive home win with a controlled 3-0 victory against Birmingham.
Tom Eaves opened the scoring for Grant McCann's side in first-half injury-time before Kamil Grosicki added a second. Substitute Keane Lewis-Potter added sheen to the scoreline late in the game as Birmingham wilted under pressure.
Hull continue to make quiet headway towards the Sky Bet Championship play-offs and were good value against a Birmingham team that have now lost three matches on the bounce.
Blues had looked defensively organised for large parts of the game, but they lost concentration when Eaves artfully headed home Grosicki's corner.
Grosicki then got in on the act after 58 minutes when he delicately chipped the ball over onrushing goalkeeper Connal Trueman following Jarrod Bowen's defence-splitting pass.
Hull have now won their previous six home games against Birmingham and finished with a flourish when Lewis-Potter thrashed home Eric Lichaj's precise delivery through the middle after 88 minutes.
Luton 0-1 Swansea
Andre Ayew scored his 10th goal of the season as Swansea made it back-to-back wins by defeating struggling Luton 1-0 at Kenilworth Road.
It had looked like the Hatters had done enough to secure a valuable point in their battle against relegation, only for Ayew to find the net with eight minutes to go, for his fourth in three games.
The visitors threatened early on, Connor Roberts sending in two efforts from 20 yards that recalled goalkeeper Simon Sluga saved easily.
Striker Ayew cut into the box after 20 minutes, firing into the side-netting, as Luton's best moment saw Andrew Shinnie strike off target after a header fell invitingly into his path.t.
Swans thought they had won a penalty when George Byers went over the challenge of the excellent Pearson in the box, only for referee David Webb to book the visiting attacker for diving.
With eight minutes to go, Steve Cooper's side had the decisive goal, Ayew finally eluding the Town defence to chest home Jay Fulton's deflected cross from almost on the goal-line.
Luton tried to find a leveller, even sending Sluga up for two late corners, but they couldn't break through an impressive Swans side, who climbed back up into the play-off places once more.
Millwall 1-2 Barnsley
Barnsley climbed off the bottom of the Sky Bet Championship table after Patrick Schmidt's last-gasp header earned them a 2-1 win over Millwall at the Den.
Substitute Aiden O'Brien had looked to have secured the home side a point when he bundled in to cancel out Conor Chaplin's first-half strike with five minutes to go.
But in the final moments of stoppage time, Schmidt, who had come on just six minutes earlier, rose highest to head into the corner and ensure Gerhard Struber's men recorded back-to-back wins for the first time this season.
Barnsley began to grow in confidence as the first half went on but it was still firmly against the run of play when they took the lead - in fact it was from their very first shot of any description.
But it was well worth the wait as Chaplin beautifully diverting Jacob Brown's cross over Bartosz Bialkowski and into the far corner.
It was a seventh goal in seven games for the in-form striker, who had managed to find the net only once this season before Struber took over.
Millwall finally began to provide a response around the hour mark, though. Cooper again went close from a corner, diverting Shane Ferguson's delivery into the ground and then up and over the bar, before Bradshaw turned Wallace's driven cross just over the bar.
Still they failed to test Samuel Radlinger with a single shot on target until the final five minutes, when substitutes Matt Smith and O'Brien combined to level the scores - the latter nodding in the former's initial header from close range.
That ought to have been enough to earn the hosts a point they had scarcely deserved but they failed to clear a late corner and Schmidt found the space to head home a dramatic winner.
QPR 2-2 Charlton
Naby Sarr's equaliser with seconds remaining rescued a point for injury-plagued Charlton in an action-packed 2-2 draw with QPR.
Lyle Taylor's leveller cancelled out Geoff Cameron's early opener but Marc Pugh's first goal for the hosts, scored with 20 minutes remaining, appeared to have given them the points.
But right at the end, goalkeeper Dillon Phillips lofted a free-kick into the QPR area and Cameron's misplaced header inadvertently teed up Sarr.
Ironically, Cameron's sixth-minute goal came courtesy of an error by Sarr.
Ebere Eze chipped a free-kick into the area and Sarr's poor clearance fell straight to Cameron, who scored with a side-footed volley from near the edge of the six-yard box.
The Addicks' injury curse struck again when Jonathan Leko was hurt in the build up to that chance and limped off soon afterwards.
But luck was definitely on Charlton's side when Nahki Wells missed two glorious chances to double QPR's lead before half-time.
Wells headed against the bar from close range after Eze's right-wing cross had been headed down by Jordan Hugill.
Wells also failed to capitalise after being sent through on goal by Purrington's appalling back-pass, shooting straight at Phillips when a pass to Luke Amos would have left the on-loan Tottenham youngster with a simple tap-in.
And a poor clearance by Wells led to Charlton equalising 11 minutes into the second half.
Conor Gallagher swung in a corner from the left and Wells succeeded only in prodding the ball out as far as Albie Morgan, whose low strike was diverted into the net by Taylor.
Wells' miserable afternoon was brought to an end when he was replaced by Bright Osayi-Samuel, who set up Pugh's goal just four minutes after coming on.
Osayi-Samuel twice twisted and turned away from Jason Pearce on the right before teeing up Pugh for a simple close-range finish.
But the visitors' persistence was eventually rewarded in dramatic fashion.
Cameron attempted to clear the danger but instead the ball bounced off the back of the American's head and straight to Sarr, who made no mistake.
Reading 3-0 Derby
Ten-man Derby lost 3-0 at Reading which extended their winless run in the Sky Bet Championship to six matches.
Derby lost defender Scott Malone to a red card for a foul in only the fourth minute, with Charlie Adam slotting in the subsequent penalty for Reading.
Although Derby played well with a numerical disadvantage, they could not force a first-half equaliser.
The visitors battled bravely after the break but fell further behind in the 58th minute when Lucas Joao slotted in his fourth goal for Reading this season.
Yakou Meite added a second spot kick for the home side near the end after Joao had been brought down in the area.
WBA 1-1 Brentford
West Brom will remain top of the Sky Bet Championship at Christmas after they were held to a 1-1 draw by fellow high-flyers Brentford at The Hawthorns.
Henrik Dalsgaard gave the dominant Bees a deserved lead two minutes before the break but their joy was short-lived as Darnell Furlong equalised in first-half stoppage time.
West Brom were denied victory two minutes from time when substitute Charlie Austin's effort was ruled out for offside.
Albion stretched their unbeaten run to 13 matches - the current longest run in the division - but a point was all they deserved from a below-par performance, although they remain above Leeds after their 2-1 at Fulham.
Kyle Edwards missed two clear chances for the hosts but Julian Jeanvier, Ollie Watkins and Christian Norgaard were just off target for Brentford.
Brentford took a deserved lead when Dalsgaard glanced home Mathias Jensen's corner from eight yards out for his first goal of the season.
Their lead lasted barely two minutes before Albion levelled with a near carbon copy move, as Furlong got across Jeanvier to head over Raya into the far corner.
Edwards had another chance just before the hour, but instead of taking it early and shooting with his left foot, he delayed and opted to turn inside on his right and rolled a weak effort straight at Raya.
Brentford continued to a be a thorn in West Brom's side and Jeanvier's headed flick from Norgaard's cross-shot flew just wide before Benrahma's long-range effort hit Ajayi and went the same way.
Austin stabbed home after Pereira's drilled shot was parried by Raya but his joy quickly turned to frustration when the assistant's flag went up for offside.

