The U's took the lead midway through the first half when Kevin Lisbie's low pass picked out the on-rushing Anthony Wordsworth, who coolly slotted a low shot past Saints goalkeeper Bartosz Bialkowski from close range.
John-Joe O'Toole almost added to Colchester's lead with a flicked header soon after but chances were largely few and far between in the first half.
Southampton pushed for an equaliser after the break. Substitute Ndiaye Papa Waigo had an effort chalked off for offside and U's goalkeeper Ben Williams denied Rickie Lambert, before the Saints fell further behind with 15 minutes to go.
Phil Ifil's measured low pass dissected the Southampton defence and Steven Gillespie ran on to slot a low shot past Bialkowski from 12 yards.
Lambert pulled a goal back in the 90th minute from the penalty spot after Dean Hammond had been fouled by Williams, but Colchester took the points.