Colchester, who have lost five of their last six in the league had the first chance when Jabo Ibehre nodded wide from Brian Wilson's cross inside two minutes.
But Oldham had the better of the first half after that with Mark Cousins denying both Matt Derbyshire and Jonathan Grounds.
The Latics took a 33rd-minute lead through Jean-Yves M'Voto, who sent a powerful header past Cousins and in off the woodwork from Lee Croft's corner.
James Wesolowski drilled a low shot wide from inside the area just before the break and finished the first half in charge, prompting the U's to change formation at half-time.
But Oldham went further ahead just after the hour-mark when Croft's pass dissected the U's defence and after Derbyshire's shot had been partially-saved by Cousins, the ball hit the post before appearing to go in off U's right-back Brian Wilson.
Cousins denied Cristian Montano after that and although Ibehre headed straight at Alex Cisak late on, it was Oldham's day.