Troy Parrott came off the bench to score the winner for Preston North End as they handed Norwich their first defeat in 10 games with a 3-2 victory in the Sky Bet Championship.
Sean Maguire, Robbie Brady and Alan Browne all started for Preston with match-winner Parrott replacing Brady at the break.
Preston went behind to a well-taken early goal from Josh Sargent, before Emil Riis equalised midway through the first half with a powerful header and then put his side ahead early in the second period after a swift break.
Substitute Gabriel Sara equalised for Norwich on 76 minutes with another neat finish but the Lilywhites had the final say soon afterwards as Parrott's cross took a big deflection off Liam Gibbs to deceive Tim Krul.
Callum Robinson opened the scoring for Cardiff City as they eased to a 3-1 victory away to Wigan.
Robinson, Sheyi Ojo and Ryan Wintle all scored for the Bluebirds, with Charlie Wyke responding, meaning Mark Hudson's impressive run as City caretaker continues.
The Ireland internationals goal came after just 7 minutes when Niels Nkounkou teed up Robinson, and he finished coolly past the advancing Ben Amos.
Sheffield United remain top of the table despite losing 3-1 away to Stoke.
The Potters, who earned their first win in four games, went in front through Ben Wilmot before Rhian Brewster levelled for Sheffield United.
Former Blade Phil Jagielka fired the Potters back in front just before half-time and Liam Delap scored his first goal for club just before the final whistle to move Stoke into 15th.
Nathan Tella's goal was enough for Burnley to move into fourth after beating Coventry 1-0, while Swansea continued their impressive form with a 2-1 win against Sunderland, who are now four games without a win.
They took the lead through Ollie Cooper and Harry Darling doubled the advantage just before the break.
Jack Clarke pulled one back for the Black Cats six minutes into the second-half, but the Swans were able to see the game out to secure four consecutive league wins.
A Ben Brereton Diaz double ensured Blackburn returned to winning ways with a 3-0 win against Rotherham.
The Chilean international scored a goal in each half, with Sammie Szmodics adding a third for Rovers who stay seventh.
A brace from Zian Flemming helped Millwall move to 13th with a win against struggling Middlesbrough.
Auston Trusty's double and a goal from Dion Sanderson saw Birmingham put three past Bristol City to end their three-game winless run.
A late brace from Jerry Yates helped Blackpool earn three points against Watford, beating Slaven Bilic's side 3-1.
Gary Madine put the Tangerines in front before Imran Louza equalised with a curling free kick but Yates secured the win with two quick goals in the final 10 minutes.
West Brom and Luton were forced to share the spoils with a goalless draw at the Hawthorns which keeps the pressure on Baggies boss Steve Bruce.