West Brom stretched their lead at the top of the Sky Bet Championship to six points with a hard-earned 2-1 win at mid-table Reading.
Albion dominated most of the first half but needed a 26th-minute equaliser from Matheus Pereira to cancel out George Puscas' early opener for Reading from a penalty.
Kyle Bartley, who had conceded the earlier spot-kick, gave Albion the lead four minutes after the break and the visitors were fairly comfortable for the rest of the game.
Fulham missed the chance to climb into the automatic promotion places as they were held to a 1-1 draw by Millwall at The Den.
Aleksandar Mitrovic put the visitors ahead from close range after just three minutes but they were pegged back almost immediately by a controversial Jon Dadi Bodvarsson strike.
Jed Wallace had the chance put Millwall ahead from the penalty spot midway through the first half but fired over the bar, while Fulham nearly snatched a winner in the final seconds when Neeskens Kebano headed a corner onto the crossbar.
Alan Browne and Tom Barkhuizen were on target as promotion-chasing Preston secured a 2-0 win at Stoke.
Preston boss Alex Neil's first visit to the Bet365 Stadium since spurning Stoke's advances earlier in the season proved to be a positive one as his side closed the gap on the automatic places to three points.
Nahki Wells scored his first goal for Bristol City as they held off a spirited comeback from Derby to claim a thrilling 3-2 victory at Ashton Gate.
The hosts took a 38th-minute lead when Niclas Eliasson's deep cross from the right was volleyed back across goal by Jay Dasilva for Wells to mark his first start for the Robins with a powerful header.
It was 2-0 just before the break as Derby were again found wanting in the air. Famara Diedhiou's header from a right-wing corner was blocked, but centre-back Filip Benkovic pounced to nod home.
The Rams did not learn their lesson and Ashley Williams headed down another Eliasson cross for Diedhiou to volley home a third after 58 minutes.
It looked to be all over, but three minutes later Martyn Waghorn dived to head home a Max Lowe cross and spark a spell
of intense Derby pressure. Chris Martin tapped home a low cross from Tom Lawrence in the 82nd minute to set up a frantic finish in which Lawrence had a deflected shot saved by City goalkeeper Dan Bentley.
Elsewhere, goals from Josh Murphy, Will Vaulks and Callum Paterson secured Cardiff a comfortable 3-0 win at Huddersfield, and James Collin's goal for Luton saw them beat Sheffield Wednesday 1-0 and move off the bottom of the table.