Brentford came from behind to strengthen their automatic promotion push with a hard-fought 2-1 win over Stoke.
Vitaly Janelt equalised with a 25-yard stunner in the 56th minute after Jacob Brown had taken advantage of Bees goalkeeper David Raya’s error to put the visitors ahead early on.
But Ivan Toney’s 25th goal of the season secured the Bees a second successive victory and a first against the Potters in the league since January 2019.
Nigel Pearson was provided with a winning start to life as Bristol City manager after Kasey Palmer scored directly from a corner in a 3-1 victory over Swansea.
The Robins midfielder looked as though he had gifted his old side the three points when he handled in the box to allow Andre Ayew to fire the hosts into a deserved lead.
But Pearson watched his new side fight back to equalise through Nahki Wells, before Palmer looped a corner all the way over goalkeeper Freddie Woodman’s head.
Antoine Semenyo sealed Bristol City’s second win in a week to give Pearson the dream start to life as manager.
Arnaut Danjuma scored the only goal as Bournemouth picked up a crucial 1-0 win over Watford in an ill-tempered game which both teams finished with 10 men.
Danjuma fired the winner – his seventh goal of the season – 16 minutes into the second half to end the Cherries’ two-match losing streak.
Bournemouth’s victory was marred by a multi-player stoppage-time brawl during which Watford striker Joao Pedro and Bournemouth midfielder Jack Wilshere were both sent off.
Luton produced a sensational comeback to defeat Sheffield Wednesday 3-2 at Kenilworth Road.
They were trailing 2-0 at half-time to Josh Windass’ double after an opening 45 minutes in which the hosts were second best by a long distance.
But Luton were level after just 15 minutes of the second period, with Kal Naismith and Ryan Tunnicliffe scoring, before Elijah Adebayo then headed home a dramatic late winner.
Birmingham scored two late goals in three minutes to earn their first home win in 13 games as they came from behind to beat QPR 2-1 at St Andrew’s.
Alen Halilovic scored a cracker for his first goal for the club after Kristian Pedersen equalised to cancel out Charlie Austin’s opener.
Paddy McNair’s late equaliser for Middlesbrough in a 1-1 draw at the Riverside prevented Mick McCarthy’s Cardiff from winning a seventh straight match.
In a game starved of clear-cut opportunities, particularly in the second half, McNair’s leveller with eight minutes remaining cancelled out Sean Morrison’s 37th-minute opener for Cardiff.
Reading managed to kick-start their season after claiming a narrow 1-0 victory at struggling Rotherham.
Defeat consigned the Millers to a fifth successive loss and they remain deep in relegation trouble after conceding midway through the first half to Michael Morrison.
Matty James’ first goal since March 2017 earned 10-man Coventry a 1-1 draw at Blackburn.
The on-loan midfielder’s hooked finish five minutes after the restart cancelled out Ben Brereton’s second goal in as many games and gave Mark Robins’ men what could be a vital point in the fight against relegation. They held on despite the 83rd-minute dismissal of Leo Ostigard.
Elsewhere, Cauley Woodrow and Michal Helik scored as Barnsley won their fifth league game in a row by beating Millwall 2-1 at Oakwell, while Brad Potts, Ched Evans and Scott Sinclair were all on target as Preston ran out 3-0 winners over Huddersfield.