Preston North End let automatic promotion slip from their grasp as Colchester United ended North End’s 18 match unbeaten run and Championship dream - for now.
George Moncur’s 82nd minute strike gave Colchester a shock victory at the Weston Homes Community Stadium.
That goal sealed the U’s League One survival, stopped North End’s promotion party and fuelled a pitch invasion from the home faithful at the final whistle.
Despite Colchester striker Chris Porter’s dreadful 58th minute penalty miss North End could not beat United keeper Sam Walker and Moncur popped up to save the U’s.
North End were a point ahead of MK Dons before kick-off and needed to win or better the Dons result but Simon Grayson’s men failed to fire.
The result allowed MK Dons to leapfrog them into second spot in the League One table after thumping Yeovil 5-1 at stadium:mk.
North End have never dropped from an automatic spot into a play-off space and will now face Chesterfield to try and end a four year absence from the Championship.
North End started well as Garner climbed high to reach Daniel Johnson’s cross but his header flew straight down the throat of Colchester keeper Walker.
Johnstone was forced into action in the 25th minute as he dived low to his right to push Richard Brindley’s deflected shot away from goal.
John Welsh - who is still yet to score this season - attempted to open his account in style by trying his luck from just outside the box in the 31st minute. But his effort was easily collected by Walker.
Paul Huntington rippled the wrong side of the netting as he latched on to Paul Gallagher’s set-piece. But the defender’s header just looped over the bar in the 43rd minute.
And with seconds to go until the half-time whistle the near 3,000 strong North End fans had their hearts in their mouths as Sam Johnstone nearly made an uncharacteristic error.
The keeper came off his line towards United winger Jacob Murphy who had outfoxed Tom Clarke on the left, Johnstone back-peddled but fortunately Murphy’s chip curled just wide of the right post.
Colchester came out all guns blazing in the second 45 desperate to avoid relegation. Bailey Wright toppled Gavin Massey in PNE’s half but Tom Eastman headed the subsequent set-piece over the bar.
Paul Gallagher picked up the ball on the edge of the box but smashed it way over the bar into a section of the 2,969 North End fans and sliced another opportunity wide moments later.
It looked like it was not going to be Preston’s day when Johnstone brought down Moncur in the box and referee Keith Stroud pointed to the spot in the 57th minute.
Johnstone was booked but Colchester squandered the opportunity to take the lead with a spectacular miss.
Porter stepped up and in a scene that would make England rugby union legend Jonny Wilkinson proud he smashed the spot-kick way over the bar.
Murphy stormed down the left towards goal but Johnstone was on hand to usher the ball away from danger in the 71st minute.
Colchester launched a slick counter attack as Murphy fed Porter in with Massey in space on the overlap but Porter’s strike was easily collected by Johnstone.
Robinson attempted the spectacular but his shot curled way wide of the right post in the 74th minute.
Johnson’s cross from the right was headed just wide by an unmarked Garner who had sprinted in at the back post and looked certain to score.
North End upped the ante and Garner’s long range effort was parried away from goal by Walker moments later.
But Colchester fought back and George Moncur snuck in and curled the ball past Johnstone in the 82nd minute.
Johnstone made a brilliant save to deny substitute Sammie Szmodics with his foot in the 86th minute.
North End could not get the ball out of their own half in the last five minutes and despite throwing on veteran striker’s Kevin Davies and Sylvan Ebanks-Blake North End could not dent the scoresheet and finished two points adrift of Karl Robinson’s men.
Colchester: Walker, Khumalo, Gilbey (Szmodics, 80), Briggs, Eastman, Massey (Wynter, 90), Moncur, Murphy (Sembie-Ferris, 80) Brindley, Fox, Porter. Subs not used: Lewington, Healey, Bonne, Lapslie.
PNE: Johnstone, Laird (Davies, 86), Clarke, Wright, Humphrey (Robinson, 58), Beckford (Ebanks-Blake, 88, Gallagher, Garner, Welsh, Huntington, Johnson. Subs not used: Stuckmann, Wiseman, Woods, Kilkenny.
Referee: Keith Stroud (Hampshire)
Attendance: 8413 (2969)