Jaap Stam's Royals edged their way to three valuable points at home to Rotherham, but they needed to remain extremely patient in dispatching the Millers who held a lead until beyond the hour mark at the Madejski.
Paul Warne's men had come to frustrate the Royals from the off, sitting back with every man behind the ball. And that tactic paid off when they stole a goal from a close range Tom Adeyemi finish.
The Royals remained patient and had total control of possession when they levelled through a fantastic Lewis Grabban volley. And Reading took the lead for the first time with 12 minutes left to play, Gunter's low cross turned home by Swift at the back post.
Royals boss Jaap Stam made four more changes to the eleven that started just 48 hours after an impressive win over Aston Villa, rotating his squad to hand Yakou Meite his first start in a Royals shirt. Roy Beerens also returned from injury to make the starting line-up, while Yann Kermorgant and Garath McCleary were restored to the eleven.
A Liam Moore block repelled an early shot from the visitors, deflecting Carlton Morris' shot wide of the goalmouth and behind for a corner. The set piece was miskicked by Moore but the ball ricocheted kindly for Al Habsi to gather in on his line.
At the other end, Jordan Obita struck a sweet volley just wide, connecting well woth Garath McCleary's corner from the right but arrowing off target.
But Reading were struggling to find the rhythm they had at Villa Park and United took a 19th minute lead against the run of play. A floated cross from the left was headed goalwards and Al Habsi could only scamble the ball off his line and into the path of Tom Adeyemi who stabbed home from close range to make it 1-0.
Reading looked to respond immediately and Meite rolled his marker to take aim with a left-footed shot, but Richard Wood did enough to ensure the shot fizzed harmlessly wide.
Twice Meite came close moments later - Obita swing a ball in from the left and Meite met it at the near post. His first effort deflected off a defender and back to him. His second from a narrow angle was smashed at goal and parried by Richard O'Donnell at his near post.
Meite again forced the Millers keeper into a save, this time a well-struck left-footed effort that he could only parry. Swift burst into the six yard box to look to convert the rebound but some last ditch defending somehow saw a Rotherham leg get to it first and somehow the visitors survived.
Meite tried his luck with a cross-shot that arced towards the top left corner but which O'Donnell tipped around his back post to United's relief.
With five minutes of the half remaining, Gunter got in behind the Rotherham line down the right and his low cross was so nearly met by the sliding body of Meite in the middle. But again Rotherham survived.
A good run from McCleary in injury time earned the home side a free kick on the left and Beerens' delivery was glanced wide by a Rotherham head. Obita redelivered it in the form of a corner and Moore bundled it goalwards, only for Joe Mattock to head off his goalline and preserve the away side's lead going into the break.
Half-time: Reading 0-1 Rotherham
McCleary took the first shot in anger after the restart but it was an easy one for O'Donnell. Beerens then crossed into the box but the ball deflected off the back of Kermorgant and behind for a goal kick.
It was all Reading, with Rotherham putting every single man behind the ball. But McCleary found the run of Gunter down the right and his cross found Beerens in space, but the winger's first time right footed swing missed it's target and a good chance went begging.
On the hour it took a sprawling save from O'Donnell to claw Obita's glancing header around his post. And then moments later an even better save from the Millers keeper denied Kermorgant with a brilliant back post header that seemed destined to ripple the Rotherham net.
Royals boss Jaap Stam made a change, bringing Lewis Grabban off the bench to replace Roy Beerens. And within moments of being on the pitch, the on loan striker hammered home a superb volley to draw the Royals level - O'Donnell had no chance with this one as he watched McCleary's floated cross find the substitute in the middle.
Kermorgant angled a good header at goal, connecting with Gunter's cross - but it was straight at O'Donnell. And time was beginning to tick worryingly away.
But with 12 minutes left to play, Reading found a second and took the lead. Williams found a ball into Gunter who was in down the right and he picked out a lovely low cross into the middle where Swift arrived to convert from close range.
It was nearly 3-1 when a sublime ball from Kelly found McCleary on the right. He took on his man and crossed low into the near post where Grabban flicked it goalwards but O'Donnell gathered it into his body after a quick juggle on the line.
Four minutes of injury time were signalled and Danny Williams drilled a 25 yards effort at goal only to see O'Donnell leap to his right to push it wide. And the final whistle sounded to deliver three more points to the Royals!
Full-time: Reading 2-1 Rotherham
Rotherham: O'Donnell, Fisher (Clarke-Harris 74), Ajayi, Wood, Mattock; Adeyemi (Yates 83), Smallwood, Vaulks; Taylor, Morris (Newell 58), Ward
Subs: Bilboe, Belaid, Bray, Purrington.
Yellow: Vaulks, Mattock
Goals: Adeyemi (19)
Reading: Al-Habsi, Gunter (c), Obita, Blackett, Moore, Williams, Swift, Beerens (Grabban 65), McCleary (Popa 90), Meite (Kelly HT), Kermorgant.
Subs: Jaakkola, Ilori, Oxford, Evans.
Goals: Grabban (66), Swift (78)
Att: 16,711 (156 away)