Reading moved level on points with the Championship play-off places as their third win from four extended Swansea City’s winless run to eight games.
Andy Carroll stole the Royals in front in a first half in which they also missed a penalty as Yakou Meite exploded.
Swans struggled after the break, with goalkeeper Steven Benda’s misplaced pass falling on Tom Ince, whose deflected shot doubled Reading’s lead.
Substitute Liam Cullen scored on the rebound to raise hopes of another Swansea comeback but the visitors’ late attempts to salvage a point were in vain.
Reading climbs to eighth in the table, level on points with fifth-placed Norwich City and below the top six on goal difference alone.
Such chaotic congestion in the Championship has sent Swansea, who started the game one position higher than Reading, down to 16th as they remain without a win since October.
Russell Martin’s men have lost three games and drawn five of their last eight matches, failing to score first in any of those matches. And although their 14 points from losing positions are the best in the division this season, the comeback specialists couldn’t repeat the trick this time.
It was a clash of styles illustrated by the Championship average possession chart, with Swansea top of that particular metric and Reading bottom.
In the actual standings, however, both teams entered this game with the same point total, with the Swans’ superior goal difference putting them in 15th position, one place above their opponents.
The sides’ contrasting approaches were evident in the opening rallies as Swansea held the ball without offering much threat, while Reading’s opening attack ended with a diving header from Carroll, easily held off by Steven Benda.
Five minutes later Swansea had their first chance. Matt Grimes rolled back the Reading defense with a quickly delivered free kick and, although Joel Piroe was tackled before he had a chance to shoot, the ball fell on Ollie Cooper, whose weak effort was saved well by Joe Lumley.
Cooper’s next involvement was to foul Meite and concede a free kick, curled by Ince, which Benda could only kick to Carroll, who stole the ball into the ground and into the net.
Swansea were struggling to contain Carroll, so much so that Jay Fulton felt he had to pull the former Newcastle United and Liverpool striker to the ground from a corner, prompting referee James Linington to point the spot. But Meite’s penalty was a shock, bloated above the bar.
There were signs the Swans could make the most of their reprieve – as Piroe failed to connect with an inviting Fulton cross before heading wide early in the second half – but they were responsible for their own downfall when Reading doubled their lead.
After Harry Darling’s goal kick, Swansea keeper Benda went straight to Ince, whose low shot deflected off Darling and rolled into the far corner.
After trailing in six of their last seven games, it wasn’t exactly uncharted territory for the Swans, who once again forced their way back into the competition.
Piroe’s header was swung onto the post by Lumley and Cullen – who had equalized for Swansea as they came from 3-0 down to draw at Coventry 10 days earlier – fired into an empty net to set up a compelling 20-minute finale.
The visitors kept pushing forward and spent the remaining time almost exclusively in their opponents’ half, but they were unable to create any real goalscoring opportunities.
An injury-time free-kick found Darling unmarked in Reading’s penalty area but, once he headed the ball into Lumley’s grateful arms, Swansea’s hopes of pulling off another act of escape were dashed. completed.
There was still time for one last chance as Benda moved up for the Swans final corner and left their goal unguarded. Lumley cleared the ball and Ince ran over it but, as he charged on goal, Ryan Manning was on hand to make the cover tackle.