A sweet finish from Stephen Quinn four minutes from time looked to have sealed a point for the Royals in the final home game of the season, but an injury time winner from Dan Johnson allowed Simon Grayson's men to head home with all three points after Jermaine Beckford's opener on the hour.
Player of the Season Ali Al Habsi had pulled out some stunning saves to deny Johnson and Beckford in a first half that the visitors dominated and despite a promising Madejski debut from 17-year-old Josh Barrett, Beckford stole in at the other end to put the Lancashire side ahead. Quinn fizzed a sweetly-hit effort past Kirkland to make it 1-1, but Johnson struck late to win it.
Paul McShane and Danny Williams returned from suspension as two of three changes to the side that drew with QPR last weekend - Chris Gunter was also fit enough to start after a slight groin strain, replacing Andrew Taylor at the back for the hosts. Young Academy players Tennai Watson and Josh Barrett were named amongst the substitutes.
The first chance came within the first five minutes, Danny Williams cutting the ball back to Deniss Rakels whose deflected effort looped just wide of the right post and behind for a corner.
Jake Cooper did have the ball in the back of the net soon after, but the offside flag was raised against the centre-back after he had headed Oliver Norwood's inswinging free-kick past Chris Kirkland and inside the left upright.
Player of the Season Ali Al Habsi was in action to push Paul Gallagher's cross over his crossbar and then save low to his left to comfortably gather in an effort from Calum Woods.
Paul McShane did enough to block an effort from Jermaine Beckford after Preston had made progress down the right through Dan Johnson - the ball bobbling just wide of the bottom right corner to Reading's relief. And Johnson tried his luck himself from distance moments later, fizzing an effort wide of Al Habsi's dive and the left post.
A low cross into the feet of Kermorgant after 26 minutes led to the Frenchman teeing up Rakels for a hooked effort that was charged down by the face of Woods en route to goal. Then Beckford had a glorious chance to open the scoring when he capitalised on a slip from Cooper to race through one on one with Al Habsi, but the Omani stretched out a left arm to palm away the striker's chip and the chance went begging.
Simon Grayson's men were playing some nice stuff and Joe Garner came close for the visitors soon after, scurrying in from the right to angle a shot across his body and just wide of the bottom right corner.
With ten minutes of the half remaining, Kermorgant swept a lovely ball out to Gunter in space on the left wing, but his dangerous ball into the box couldn't find a Reading player and it fizzed across the six yard box and behind for a goal kick.
Williams then did well to win the ball, beat his man and play a ball forward into space for Kermorgant to run onto. But an offside Rakels chased the ball down too and the flag went up before Kirkland could be troubled.
Al Habsi pulled off an outstanding stop to claw a Johnson drive off his line and around the post but an uneventful first half ended goalless.
Half time: Reading 0-0 Preston North End
Josh Barrett was introduced at half-time for his Madejski Stadium debut and with his first touch he passed the ball into the back of the Preston net - but he had been flagged offside as he ghosted onto a Kermorgant pass in behind the North End back line and knew it as he nonchalantly rounded Kirkland.
Norwood floated a cross into the box from the left and McShane won it in the air, but couldn't direct his header on target. Then Barrett fizzed a beautiful ball into the path of Rakels on the left, who forced a save from Kirkland with a near post left-footed drive.
Beckford hooked over after a pass at the back went astray to present the Preston forward with a shooting opportunity, but Barrett again swept a ball out wide this time finding Kermorgant whose low cross was hacked behind for a corner. Cooper won it in the air, but Kirkland calmly plucked it out of the air.
But the visitors broke the deadlock just before the hour. A ball forward was chased by Beckford and miscommunication between Al Habsi and McShane allowed the striker to coast in on goal and deftly hook the ball inside the left post for 1-0.
Barrett delivered a pinpoint pass out to Rakels who brought it down and got his shot away, but it was charged down and the move ended with McCleary arrowing high over the bar from the right side of the box.
McShane nearly got on the end of an inswinging cross from the left but was bundled to the floor and appeals for a penalty went unheard. Then Al Habsi had to be alert to save a bobbling shot from Garner.
Barrett tried his luck from distance but fizzed an effort wide from 25 yards out, then Kermorgant got a faint glance to a good McCleary cross but couldn't steer it towards the target.
Gallagher beat McShane down the left and forced another fine save from Al Habsi with 20 minutes left on the clock. Then Barrett came within a whisker of equalising - the Royals broke and Quinn fed the ball into the path of the 17-year-old who from a tight angle beat Kirkland but watched as the ball agonisingly skidded inches side of the bottom left corner.
With four minutes of the second half left to play, the Royals drew level with a fantastic finish from Stephen Quinn
- the Irish midfielder opening his Royals account on the final day of the season when he collected a pass from Kermorgant and directed a sweetly struck left footed drive that Kirkland could only watch fly in off the right post.
Barrett almost found a winner in the final minute of the ninety when, on the counter attack, Rakels pulled a pass back for the youngster who did well to drive low at goal and force Kirkland into a tidy save.
But in fact Preston would win it in injury time when Johnson
was found in space inside the penalty area and the North End top scorer arrowed home with his left foot to make it 2-1.
Full time: Reading 1-2 Preston North End
Reading: Al-Habsi, McCleary, Gunter, Cooper, McShane (c), Evans (Barrett HT), Norwood, Quinn, Williams, Kermorgant, Rakels.
Unused Subs: Bond, Watson, Taylor, Ferdinand, Cox, Vydra.
Preston: Kirkland, Cunningham (Vermijl 66), Woods, Browne, Huntington, Wright, Johnson, Garner (Doyle 84), Reach, Gallagher (c), Beckford (Hugill 85).
Unused Subs: Pearson, Kilkenny, Robinson, Hudson.
Att: 15,834 (778 away)