The suspension of Leon Britton gave Nathan Dyer his first start after a late appearance in the victory at Burnley.
The Royals kept the Swans penned back in their own half in the opening minutes, although Dyer was prominent in a couple of breakaways.
Swansea had a great chance of opening the scoring in the 15th minute when Angel Rangel headed back into the danger area but Jason Scotland failed to direct his header goalwards.
Another chance came seven minutes later when a cross from Jordie Gomez was met by Gary Monk, but the skipper's header flew wide.
It was the Swans playing all the good football but, despite their superiority, they were unable to create any clear opening.
All Reading had to offer in return was a lone break by Jimmy Kebe that ended when Noel Hunt strayed offside.
The Swans deservedly broke the deadlock in first-half added time when Scotland turned quickly to outwit Michael Duberry before rifling a shot into the corner of the net.
The second half opened with the Swans once again pushing forward and the Royals rarely broke out of their half as Swansea dominated midfield.
Kevin Doyle did have a fleeting chance with a header from a Stephen Hunt cross but he glanced it wide.
Hunt then made a superb tackle on Rangel in the penalty area as the full-back raced in on goal.
Steve Coppell pulled off Noel Hunt for midfielder Marek Matejovsky on the hour in an attempt to stem the Swansea attacks.
The change pepped up the visitors and for a time they began to look like promotion candidates with Matejovsky providing a link between midfield and attack.
Back came the Swans and when Liam Rosenior pulled back Dyer in the 80th minute, he was dismissed after receiving a second yellow card just five minutes after his first which was also for a foul on Dyer.
The Swans made sure of victory in the 89th minute when Scotland burst through a couple of tackles and the ball ran loose to substitute Andrea Orlandi, who slid it into the net.