Mooney converted substitute Kayode Odejayi's lay-off from six yards to lift the U's within a point of the play-off places.
Posh took a first-minute lead through Tommy Rowe, who headed in Chris Whelpdale's deep cross at the far post. The visitors had further chances after that, with skipper George Boyd going close and Colchester goalkeeper Ben Williams denying Lee Tomlin from point-blank range.
Whelpdale's header struck the foot of the post before the Us equalised eight minutes before the break, Steven Gillespie converting from close range after Posh defender Kelvin Langmead had only partially cleared Lee Beevers' low cross.
Charlie Lee's 25-yard effort crashed against the underside of the bar for Peterborough in the opening minute of the second half, while at the other end Ryan Bennett cleared David Perkins' diving header off the line.
Mooney then slotted in from close range to bag Colchester's all-important winner.