Peterborough United suffered their first defeat since the home reverse to Crawley Town and lost the services of Lee Tomlin, who was controversially red-carded in the second half at the Weston Homes Community Stadium.
Tommy Rowe tested goalkeeper Walker with a low left-footed effort from 25-yards on two minutes and Michael Bostwick also went close with a header from a McCann corner kick in the opening exchanges as Darren Ferguson's men pressed for a breakthrough.
Elliott Lee fired over at the other end, moments after Tomlin had received treatment. Eastmond was then denied by the legs of Olejnik after an error in midfield as Colchester responded well to being on the back foot in the early moments.
Taylor tested Walker with a low drive from 20-yards after a good lay-off from Assombalonga. On 25 minutes, an intelligent first-time lay-off from Taylor found Payne, but the midfielder fired over with his right-foot.
Rowe headed a McCann corner kick over the top two minutes later as Posh continued to dominate. Posh created a clear opportunity in front of goal on the half hour mark as the ball found Rowe, but he fired straight at Walker, who made a fine point blank save.
Zakuani headed a Tomlin cross wide of the target on 34 minutes after McCann's initial corner had just eluded Bostwick at the near post.
Just before the break, Colchester were close to making it 1-0 as Eastmond curled a left-footed effort against the top of the crossbar from 20-yards after a one-two with Morrison.
Olejnik denied the lively Lee on 48 minutes before Tomlin fired over at the near post after a slide-rule pass from Rowe. On 55 minutes, Posh were reduced to 10-men as Tomlin was sent-off for an apparent kick on a defender in an off the field incident spotted by the assistant referee.
Posh were adamant they should have been awarded a penalty kick just after the hour mark as Rowe was upended by Walker. Rowe was booked for diving. Olejnik claimed a shot from Lee on 67 minutes as the game became stretched.
The U''s opened the scoring on 68 minutes and it was the 18-year-old substitute BONNE who powered home a header over Olejnik from close-range.
McCann and Zakuani were replaced by Swanson and Barnett as Posh made a double change. Assombalonga headed wide and then straight at Walker in a matter of minutes as Posh continued to create chances.
Final Score: Colchester United 1-0 Posh
Colchester: Walker, Wilson, Bolger, Okuonghae, Garbutt, Gilbey, Eastmond, Bean, Monakana (sub Dickson 79min), Morrison (sub Bonne 61min), Lee (sub Szmodics 68min). Unused subs: Cousins, Bond, Ladapo, Spence.
Posh: Olejnik, Little (sub Brisley 90min), Zakuani (sub Barnett 77min), Bostwick, Ntlhe, McCann (sub Swanson 77min), Payne, Rowe, Tomlin, Taylor, Assombalonga. Unused subs: Day, Mendez-Laing, Newell, Alcock.
Attendance: 4,149 (1,090 Posh fans)