Match ends, Swansea City 2, Reading 0.
Reading manager Paul Clement made an unhappy return to the Liberty Stadium as his struggling side were beaten by Swansea City.
Oli McBurnie's penalty gave the vibrant hosts a 1-0 half-time lead which did not reflect their domination.
Reading almost made them pay for their profligacy but striker Yakou Meite twice headed wide.
Apart from those scares, Swansea were in control and sealed victory with McBurnie's late strike from close in.
A second win in a week lifts the Swans up to seventh in the Championship table - two points from the play-off places - while Reading remain in the relegation zone.
This was Clement's first visit to the Liberty Stadium since he was sacked by Swansea last December, midway through a season which ended with their relegation from the Premier League.
The former Real Madrid and Bayern Munich assistant coach had steered the club to safety in remarkable fashion in the previous campaign, and he appeared to have rediscovered that survival instinct when he helped Reading preserve their Championship status last term.
However, that position looked precarious as the Royals entered this match in the bottom three, with only Preston having conceded more goals in the division this season.
Despite early chances for Meite and Liam Kelly, the visitors were soon on the back foot as their opponents dominated possession and repeatedly found themselves in the Reading penalty area.
Swansea academy graduate Daniel James was a live wire on the left wing, frequently beating his marker Andy Yiadom but squandering opportunities to open the scoring, blasting one particularly promising chance over the bar.
He made amends with another darting run into the box, getting past Yiadom who then pulled the young winger to the ground, prompting referee Keith Stroud to point to the spot.
McBurnie drove his penalty low and hard into the bottom corner for his first goal since Swansea's 2-1 win over Millwall on 1 September.
The home side continued to cut Reading open at will, playing with a panache which will have delighted manager Graham Potter - as much as their failure to add to their lead will have frustrated him.
There were warning signs that Swansea's wastefulness could prove costly, as Meite missed with a free header from a corner and then did the same from open play soon afterwards.
Reading's efforts on goal were fleeting, however, and Swansea continued to press for a second goal, which McBurnie almost found when his close-range shot was smothered by Royals goalkeeper Anssi Jaakola.
Swansea eventually got their reward with five minutes left as a quick counter-attack freed James on the left, and his inviting low cross was turned in by McBurnie.
Swansea manager Graham Potter told BBC Radio Wales:
"I'm delighted for the players, they put such a lot into the game.
"It's not easy, the third game in a week, but we had good control first half, attacked well and it's not so easy to do against a defensively organised team like Reading.
"It's back-to-back wins for us I think for the first time this season and so it's another tick in the box."
Reading manager Paul Clement told BBC Radio Berkshire:
"In the first half we played poorly, we struggled to pin them down and something had to change, but we did have a disallowed goal that should have stood.
"We got back into in the second half and had 14 shots away from home, so I was pleased with the spirit and performance in the second half.
"It's been a really disappointing season so far. I understand that with each defeat, the pressure grows, but I said to the players that while I feel you are with me, I will continue to fight.
"This league is a marathon, and you've got to slog, grind, and show resilience. I haven't worked for 20 years to get a fantastic job like this to give up and walk away when it gets tough."
- 1NordfeldtBooked at 66mins
- 5van der Hoorn
- 3OlssonSubstituted forCarter-Vickersat 78'minutes
- 27FultonSubstituted forFerat 62'minutes
- 20JamesSubstituted forJohnat 88'minutes
- 9McBurnieBooked at 54mins
- 10SwiftSubstituted forSimsat 88'minutes
- 12McClearySubstituted forBödvarssonat 64'minutes
- 21MeiteSubstituted forAlukoat 90+2'minutes
- 9BaldockBooked at 81mins
- Keith Stroud
- Shots on Target
Second Half ends, Swansea City 2, Reading 0.
Foul by Leroy Fer (Swansea City).
Leandro Bacuna (Reading) wins a free kick on the left wing.
Corner, Reading. Conceded by Kyle Naughton.
Corner, Reading. Conceded by Kyle Naughton.
Delay over. They are ready to continue.
Substitution, Reading. Sone Aluko replaces Yakou Meite.
Delay in match Bersant Celina (Swansea City) because of an injury.
Substitution, Reading. Josh Sims replaces John Swift.
Substitution, Swansea City. Declan John replaces Daniel James.
Attempt saved. Yakou Meite (Reading) header from the centre of the box is saved in the bottom left corner. Assisted by Tyler Blackett with a cross.
Attempt blocked. John Swift (Reading) right footed shot from the left side of the box is blocked. Assisted by Jón Dadi Bödvarsson.
Goal! Swansea City 2, Reading 0. Oliver McBurnie (Swansea City) right footed shot from very close range to the centre of the goal. Assisted by Daniel James with a cross.
Attempt saved. Sam Baldock (Reading) right footed shot from the centre of the box is saved in the top centre of the goal. Assisted by Liam Kelly with a cross.
Corner, Swansea City. Conceded by Anssi Jaakkola.
Attempt saved. Connor Roberts (Swansea City) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Leroy Fer.
Offside, Swansea City. Daniel James tries a through ball, but Bersant Celina is caught offside.
Sam Baldock (Reading) is shown the yellow card for a bad foul.
Matt Grimes (Swansea City) wins a free kick in the attacking half.