Paul Anderson had opened the scoring for the Swans but when Christian Roberts equalised midway through the second half, it looked as though a draw was on the cards until Feeney struck.
The Swans made two changes from the side held by Brighton with Andrea Orlandi and Feeney relegated to the bench in favour of Anderson and Darryl Duffy.
They went ahead in the 20th minute with a crisp shot from Anderson. Swindon tried to play their way out of defence but gave the ball away to the unmarked Jason Scotland.
His low cross evaded Phil Smith in the Robins goal and the winger despatched the loose ball into the corner of the net.
Only a superb save by Dorus de Vries in the 29th minute kept the Swans in front. He leapt to his right to tip round a header from Billy Paynter after Dennis Lawrence had failed to cut out a cross.
Duffy suffered a recurrence of his groin injury and was replaced by Feeney for the start of the second half.
Swindon came close to an equaliser in the 50th minute when a centre from Sofiane Zaaboub went right across the Swansea area to Paynter, whose first-time shot struck the post and rebounded to safety.
The Robins deservedly levelled in the 70th minute when Roberts cut in from the right and unleashed a venomous shot into the far corner of the net.
Within five minutes the Swans were back in front when Feeney came in at the far post to lob in a deep cross from Butler.
Both sides went close as the game drew to a close, but the Swans held on for victory.