Swansea took the lead after only 21 minutes with a shot from Paul Anderson from within the box.
Swindon had a couple of chances, but they came to nothing so went into the half time break a goal down.
Roberts equalised for Swindon on 70 minutes beating a couple of players before firing the ball into the back of the net to make it 1-1.
The home fans then started to get on Robert's back due to the fact that he use to play for Cardiff City.
Swansea soon took the lead again with a header from Feeney making it 2-1 on 74 minutes.
Swindon tried, but ran of of time to get another equaliser. Overall a average game where a draw would have been a fair result. The defeat moves Swindon back down to 9th place ahead of the visit by Gillingham on Saturday.