Match ends, Preston North End 3, Cardiff City 0.
Cardiff City lost their unbeaten record and their place at the top of the Championship as Preston North End dominated them at Deepdale.
Josh Harrop set the Lilywhites on their way with a fine free-kick, scoring his first goal since his summer move from Manchester United.
Sean Maguire doubled the lead after the break, firing in from a tight angle.
Alan Browne added an eye-catching third, as he lobbed Cardiff goalkeeper Neil Etheridge from the centre circle.
Leeds United's win against Birmingham sees them lead the Championship by a point from Cardiff, while Preston rise to fifth.
Preston were without midfield duo Ben Pearson and Daniel Johnson, but hardly appeared below strength as they snapped into the league leaders.
Jordan Hugill was first to test Cardiff keeper Etheridge, with Maguire also denied from the rebound by Joe Bennett's timely challenge.
Cardiff seemed unsettled by a physical Preston side, but nearly snatched a lead against the run of play when Joe Ralls' shot was deflected just wide of the post.
But with the first half ticking down, Preston were awarded a free-kick 25 yards from goal and Harrop stepped up to curl into the corner.
Maguire could have doubled the home side's lead before the break but his header was straight at Etheridge.
Preston continued to fashion good openings after half-time and Darnell Fisher should have done better after being put through by Tom Barkhuizen.
The Cardiff goal continued to come under threat as first Paul Huntington and then Barkhuizen flashed headers just wide.
Cardiff boss Neil Warnock had seen enough and made an early double change, with Lee Tomlin and Liam Feeney replacing Loic Damour and Junior Hoilett.
But the fresh legs made little difference as Preston doubled their lead, with Barkhuizen teeing up Maguire to score from a tight position.
Cardiff huffed and puffed but were unable to find a way through against a defence that has only conceded two league goals so far this campaign.
Browne underlined Preston's dominance with a third goal, the Republic of Ireland midfielder catching Etheridge off his line with a long-range lob.
The scoreline mirrored the Bluebirds' result at Deepdale almost exactly a year ago, when they suffered the same fate under former manager Paul Trollope.
Preston manager Alex Neil:
"That was a really pleasing win and it was no more than we deserved.
"I thought we were the better side throughout the match; created the most chances against a team that hasn't lost all year and to be honest, are a good team.
"We kept them extremely quiet and I thought we did really well. We had chances prior to scoring the goals - it's not like we didn't have opportunities and we were fortunate."
Cardiff manager Neil Warnock told BBC Radio Wales:
"It's no excuse because the goals were terrible, but we had eight or nine lads who were not at the game today.
"If we hadn't been undefeated I would have made three or four changes for the game... I take a bit of blame because when I looked at them this morning in training they were a little bit jaded.
"They get in your faces here and I'm looking forward to playing them at our place if I'm honest, I took a lot of stick on the bench today."
- 14FisherBooked at 7minsSubstituted forWoodsat 81'minutes
- 8BrowneSubstituted forGallagherat 87'minutes
- 19WelshBooked at 64mins
- 24MaguireSubstituted forHorganat 88'minutes
- 10HarropBooked at 75mins
- 2PeltierBooked at 82mins
- 14BambaBooked at 39mins
- 17GunnarssonBooked at 24mins
- 20DamourSubstituted forTomlinat 63'minutes
- 33HoilettSubstituted forFeeneyat 63'minutes
- 10ZohoreSubstituted forWardat 80'minutes
- 5Ecuele Manga
- Oliver Langford
- Shots on Target
Second Half ends, Preston North End 3, Cardiff City 0.
Offside, Preston North End. John Welsh tries a through ball, but Jordan Hugill is caught offside.
Foul by Jordan Hugill (Preston North End).
Sean Morrison (Cardiff City) wins a free kick in the defensive half.
Substitution, Preston North End. Daryl Horgan replaces Sean Maguire.
Substitution, Preston North End. Paul Gallagher replaces Alan Browne.
Offside, Preston North End. Paul Huntington tries a through ball, but Jordan Hugill is caught offside.
Attempt blocked. Joshua Earl (Preston North End) right footed shot from the centre of the box is blocked. Assisted by Josh Harrop with a cross.
Corner, Preston North End. Conceded by Neil Etheridge.
Lee Peltier (Cardiff City) is shown the yellow card for a bad foul.
Tom Barkhuizen (Preston North End) wins a free kick on the left wing.
Foul by Lee Peltier (Cardiff City).
Attempt blocked. Sean Maguire (Preston North End) left footed shot from the centre of the box is blocked. Assisted by Alan Browne.
Substitution, Preston North End. Calum Woods replaces Darnell Fisher.
Tom Barkhuizen (Preston North End) wins a free kick in the defensive half.
Foul by Lee Peltier (Cardiff City).
Substitution, Cardiff City. Danny Ward replaces Kenneth Zohore.
Goal! Preston North End 3, Cardiff City 0. Alan Browne (Preston North End) right footed shot from more than 35 yards to the centre of the goal.
Offside, Preston North End. Joshua Earl tries a through ball, but Jordan Hugill is caught offside.