The U's opened the scoring at Fratton Park after just two minutes when poor Pompey marking allowed Gavin Massey to stroke home Freddie Sears' cross from the right.
The Blues hit back three minutes later when Dan Butler's corner to the far post from the right picked out Jed Wallace, who produced a stunning volley for his second goal in three games.
Pompey debutant Sam Sodje gave the visitors a golden opportunity to restore their lead after 15 minutes, when he scythed down Sears in the penalty area.
Referee David Phillips pointed to the spot and Sears dusted himself down before coolly placing the spot kick into the top corner.
Massey made it 3-1 to Colchester in the 20th minute when the ball broke to him on the edge of the box and his strike deflected cruelly up and over home goalkeeper Simon Eastwood.
James Keene cut Pompey's deficit after 73 minutes when he raced on to substitute Liam Walker's through ball and blasted home, but it was not enough to prevent their seventh straight defeat.