Preston had the early play, winning a corner after just seven minutes which Chris Sedgwick took and then they won another corner in the 22nd minute which Kevin Nicholls took, but it came to nothing.
Johnnie Jackson was booked for a foul on Darren Carter after 31 minutes.
Preston took the free-kick from the left channel 30 yards out and Nicholls hit a right-foot shot which was saved by Aidan Davison, the Colchester keeper, at the second attempt.
The U's had their first corner in the 32nd minute when Jackson hit an in-swinger which was saved.
Andrew Carroll had a five-yard header from a Danny Pugh left-foot left-wing cross which went wide.
Colchester took the lead in the 41st minute when a short free-kick by Jackson was crossed by George Elokobi to hit a left-foot left-wing cross and Kevin Lisbie was left with a header which went into the bottom left-hand corner of the net.
Preston brought on substitute Simon Whaley for Pugh, but Colchester were awarded a penalty in the 61st minute when a Jackson free-kick was hand-balled by Carter, who got a yellow card.
The penalty was hit right-footed into the top left-hand corner of the net by Teddy Sheringham, one of the oldest players to score against Preston at 41 years of age.
Callum Davidson was booked for a foul on Mark Yeates and Brett Ormerod replaced Patrick Agyemang as Paul Simpson tried to shake things up.
However, Karl Duguid, the U's captain, was fouled by Nicholls who got the yellow card and the free-kick was taken by Yeates.
He hit a 25-yard effort right-footed into the top left-hand corner of the net to make it 3-0 to the visitors and end the game as a contest.