Ryan Mason got off to a winning start in his first game in charge of West Brom as Isaac Price’s 15th-minute goal was enough to beat Blackburn 1-0, although they finished with 10 men after Darnell Furlong was sent off.
Harvey Knibbs scored five minutes into stoppage time as Charlton marked their return to the second tier with a 1-0 win over Watford, while Dael Fry’s header gave Middlesbrough a 1-0 victory at home to Swansea.
Late goals from Divin Mubama and Sorba Thomas helped Stoke to a 3-1 win over Derby. Carlton Morris had put the Rams ahead, but Lewis Baker dragged City level.
Macaulay Langstaff scored with seven minutes remaining as Millwall won 2-1 at Norwich.
Camiel Neghli put Millwall ahead, but just three minutes later, Josh Sargent charged down a clearance from Lions goalkeeper Steven Benda to equalise.
Australian midfielder Adrian Segecic’s debut goal for Portsmouth gave them a 1-0 win at Oxford, while Coventry’s Milan van Ewijk struck the woodwork as they were held to a 0-0 draw by Hull.
Ben Whiteman inadvertently put QPR ahead against Preston when he deflected a cross from the lively Karamoko Dembele into his own net.
But Preston equalised moments after half-time with a pure route-one goal, Milutin Osmajic racing on to keeper Daniel Iversen’s long punt and tucking the ball home with one touch to earn a 1-1 draw.
Wrexham were undone by two late goals as they slipped to a 2-1 defeat at Southampton.
The newly-promoted side led at half-time through a Josh Windass penalty after Kieffer Moore was shoved over as he raced towards goal.
But substitute Ryan Manning curled home a stunning free-kick to haul Saints level and then his cross was lashed in at the far post by Jack Stephens six minutes into stoppage time.