Micheal Timlin should have scored early on when he only had the 'keeper to beat he allowed the 'keeper to make a save. Rose then went close for Swindon with a 20 yard free kick hitting the post.
Thomas Dossevi opened the scoring for Swindon on 29 minutes with a close range shot after being set up by Austin.
Just before half time Colchester equalised with a close range header, which looked to be offside, but wasn't given.
Charlie Austin scored his 10th goal of the season on 54 minutes to give Swindon a 2-1 lead, with a shot from 10 yards out.
Overall a good win for Swindon, which now moves them back up the table a bit into 13th place ahead of next Saturday's trip to Rochdale.