Match ends, Colchester United 1, Preston North End 0.
Preston missed out on automatic promotion after they suffered a narrow loss to Colchester, who clinched League One survival with their victory.
George Moncur slotted home from 12 yards after good work from Chris Porter, who had missed a penalty earlier in the half.
MK Dons' win over Yeovil means North End must settle for the play-offs, where they will face Chesterfield.
Preston have never gone up via the play-offs in nine previous attempts.
Simon Grayson's side had been in the top two since the start of March and had not lost in the league since 31 January.
But their 18-match unbeaten run in League One came to an end against a Colchester side that stayed up at the expense of Crawley, Notts County and Leyton Orient on the final day.
In a nervy first-half, both sides lacked an attacking edge and Preston centre-back Paul Huntington carved out the away side's best chance but failed to put enough power behind his header.
The hosts, knowing only a victory and other results going their way could help them stay in League One, were unlucky not to lead at the break as Jacob Murphy's attempted lob over keeper Sam Johnstone drifted wide.
However, 11 minutes into the second half, Colchester were gifted a lifeline as Johnstone brought down midfielder Moncur in the box, but Porter blazed his spot-kick over the bar.
Top scorer Joe Garner missed two great chances, first his header from Paul Gallagher's inch-perfect free-kick being deflected over before the 27-year-old nodded wide from just a couple of yards out.
And Preston were made to pay for their missed chances as Moncur and Porter combined to give Colchester the goal they required to secure their unlikely survival in the third tier for another season.
Colchester manager Tony Humes told BBC Essex:
"Credit to the players, they were brilliant against a really good team and it's just amazing. We just kept going and going, stuck to what we believed in and ultimately got the reward.
"I was surprised when the referee gave the penalty but the miss didn't prove important in the end. George Moncur has lots of quality and has that ability to stroke the ball into the net.
"We didn't get any notice of what was going on elsewhere until we scored and these players will only grow from this."
- 18EastmanBooked at 75mins
- 8GilbeySubstituted forSzmodicsat 80'minutes
- 21MasseySubstituted forWynterat 90+1'minutes
- 25MurphySubstituted forSembie-Ferrisat 81'minutes
- 34JohnstoneBooked at 57mins
- 6WrightBooked at 50mins
- 3LairdSubstituted forDaviesat 86'minutes
- 7HumphreySubstituted forRobinsonat 58'minutes
- 10BeckfordSubstituted forEbanks-Blakeat 89'minutes
- Keith Stroud
- Shots on Target
Second Half ends, Colchester United 1, Preston North End 0.
George Moncur (Colchester United) wins a free kick in the defensive half.
Foul by John Welsh (Preston North End).
Substitution, Colchester United. Alex Wynter replaces Gavin Massey.
Attempt blocked. Dion Sembie-Ferris (Colchester United) left footed shot from the right side of the box is blocked.
Substitution, Preston North End. Sylvain Ebanks-Blake replaces Jermaine Beckford.
Corner, Colchester United. Conceded by Tom Clarke.
Corner, Colchester United. Conceded by Sam Johnstone.
Attempt saved. Sammie Szmodics (Colchester United) right footed shot from the right side of the box is saved in the centre of the goal.
Substitution, Preston North End. Kevin Davies replaces Scott Laird.
Foul by Chris Porter (Colchester United).
John Welsh (Preston North End) wins a free kick in the attacking half.
Corner, Preston North End. Conceded by Richard Brindley.
Foul by Tom Eastman (Colchester United).
Joe Garner (Preston North End) wins a free kick in the defensive half.
Goal! Colchester United 1, Preston North End 0. George Moncur (Colchester United) right footed shot from the centre of the box to the bottom left corner. Assisted by Chris Porter.
Corner, Colchester United. Conceded by John Welsh.
Substitution, Colchester United. Dion Sembie-Ferris replaces Jacob Murphy.
Substitution, Colchester United. Sammie Szmodics replaces Alex Gilbey.