Substitute Scott Hogan netted a 90th-minute winner as Stoke finally picked up their first win of the Championship season as they beat leaders Swansea 2-1 at the Liberty Stadium.

With boss Nathan Jones coming under increasing pressure, the Potters made a nightmare start as they fell behind inside a minute, Andre Ayew tapping in the rebound after Stoke keeper Adam Federici parried Yan Dhanda's shot.

But Stoke levelled in the 22nd minute, Sam Clucas netting against his former club, and then stunned Swansea by snatching the winner at the death through Hogan.

Ten-man Leeds were unable to take advantage as they lost 2-1 to Millwall at The Den.

Millwall, who had Adam Barrett in caretaker charge after Neil Harris resigned during the week, moved in front in the 16th minute with Jed Wallace converting a penalty after Gaetano Berardi was sent off.

Tom Bradshaw made it 2-0 on the stroke of half-time with a fine finish but despite Ezgjan Alioski reducing the deficit a minute into the second half, Leeds could not find an equaliser.

Those results enabled West Brom to move top of the table after a 4-2 win over Cardiff at The Hawthorns.

Matheus Pereira's curler (20) and Grady Diangana drive (42) put the Baggies 2-0 ahead at the break and Charlie Austin added a third with 19 minutes left.

Cardiff striker Danny Ward bagged a brace (75 & 86) to set up a frantic finish but Romaine Sawyers wrapped up the points in stoppage time.

In the lunchtime kick-off, Fulham shared an entertaining 2-2 draw with Charlton at Craven Cottage.

Conor Gallagher (41) put the visitors into a deserved lead but Fulham levelled 10 minutes into the second half when Ivan Cavaleiro fired home after a one-two with Bobby Decordova-Reid.

Macauley Bonne headed Charlton back in front within two minutes only for Aleksandar Mitrovic to make it all square again six minutes later, pouncing from close range.

Nottingham Forest climbed into second place, level on points with West Brom, after a 1-0 home win over Brentford as Ben Watson grabbed the only goal in the 56th minute.

Preston are now third after extending their unbeaten league run to eight games after beating Barnsley 5-1 at Deepdale.

Daniel Johnson's 31st-minute opener for North End was cancelled out by Cameron McGeehan two minutes before half-time - Barnsley's first away goal in the league this season.

But Alex Neil's side ran riot in the second half with Tom Barkhuizen (50), Johnson (60), Ben Pearson (63) and Josh Harrop (77) on target.

Famara Diedhiou netted the only goal after 12 minutes as Bristol City moved into the final play-off position following a 1-0 win over Reading, who drop into the bottom three.

Second-half goals from Karlan Grant (68), Juninho Bacuna (74) and Elias Kachunga (82) helped Huddersfield post back-to-back league wins as they eased past Hull 3-0 at home.

A Matty Pearson own goal in the 11th minute, after a blunder by goalkeeper Simon Sluga, and a second from Tom Lawrence (70) helped Derby to a 2-0 home win over Luton.

QPR ended a two-game losing run by thumping Blackburn 4-2 at Loftus Road.

Nahki Wells (30) opened the scoring with Ebe Eze (49) adding a second before Bradley Dack (57) halved the deficit from the penalty spot.

Bright Osayi-Samuel (60) and Jordan Hugill (77) extended QPR's lead with Adam Armstrong (86) netting a consolation.

Massimo Luongo's first goal for Sheffield Wednesday ensured a 1-0 win over Wigan at Hillsborough.