Preston beat Barnsley 2-0 to halt the Tykes' Championship play-off momentum.
Goals from Jordan Storey and Ched Evans sealed victory in the Lilywhites' last game at Deepdale this term.
Frankie McAvoy's men are ending the campaign on a high after securing their third straight win.
Barnsley have already confirmed their play-off spot but missed the chance to climb the table.
The Reds could not handle the physical threat of the hosts as their run of four wins in five ended.
Conor Chaplin fluffed a great early chance after top-scorer Cauley Woodrow's pinpoint cut-back.
The visitors were let off the hook after Brad Collins misjudged a corner and Preston could not convert.
Liverpool loanee Sepp Van Den Berg tested Collins at the near post as neither side took control.
Preston got joy from forward Tom Barkhuizen's deceptive throw-ins and Barnsley's defence looked uneasy.
Michal Helik's acrobatic effort forced North End shot-stopper Daniel Iversen's first save.
Moments later, Storey pounced on a goalmouth scramble to give the Lilywhites the lead when he poked home his first of the season after Ryan Ledson's corner caused havoc.
Barnsley marksman Daryl Dike fed off scraps and was limited to one speculative header before the break.
Tykes boss Valerien Ismael demanded a response with three changes at half-time but they made the worst possible start as the hosts doubled their lead.
Barkhuizen's long throw caused problems and Storey turned provider with a flick on for Evans, who smartly finished his fifth goal since joining the club in January.
It was the striker's second Deepdale goal in two games after signing a new two-year deal.
Barnsley captain Alex Mowatt's corner was headed just over by Mads Andersen after the hour mark.
USA international Dike was destined to halve the deficit but his shot was blocked and trickled just wide.
Iversen then had to be alert to punch away Mowatt's corner as the visitors got a foothold and he made a superb save with his feet to deny Jasper Moon as Preston held firm.
And Evans could have had a second late on but unselfishly squared to substitute Brad Potts, but he failed to convert.
No Data Analysis info