The Royals' unbeaten home record came to an end when a 90th minute Jordan Ayew penalty stole a narrow victory for Aston Villa under the lights at Madejski Stadium.
Steve Bruce's side took a lead into the break thanks to Jonathan Kodjia's wickedly deflected effort towards the end of the half, but Yann Kermorgant equalised when heading home Danny Williams' saved penalty early in the second period.
And it looked like Reading would at very least earn a point, before Ayew won and converted a last gasp spotkick when he went to ground inside the box and slotted home to deny Jaap Stam's men anything from an evenly-contested affair.
Jaap Stam named an unchanged side for the visit of Aston Villa - starting with the same eleven and keeping the same substitutes as the likes of McShane, Cooper, Quinn, Meite, Mendes and Rakels all continue to recover from injuries.
With the game six minutes old, Reading threatened the Villa box for the first time. Swift lifted a ball over the top for McCleary to run onto down the right and he did well to cut a low ball into the centre, where it was met by a Villa leg first and hacked clear.
Ali Al Habsi had to be alert to save a volley from Gary Gardner that fizzed towards his bottom left corner, and the Omani came rushing off his line moments later to slide and clear a throughball that Gardner was looking to latch onto.
Gestede was offside has he scurried onto an Adomah ball into the box, while the home side were winning a flurry of corners but not profiting from them.
The Royals were playing some good stuff, frustrating the away fans and players alike with their possession game, but in cruel fashion the visitors took the lead.
Breaking at pace through Adomah down the left, a low ball was played across the box to Kodjia in space. He took aim but it cannoned off Tyler Blackett's body and bobbled cruelly past a helpless and wrongwrooted Al Habsi, rolling into the bottom right corner.
Reading almost responded immediately, but Gollini did enough to prevent Swift sweeping a rebound off the Villa keeper into the net at the near post. And for all Reading's dominance, Steve Bruce's men took a slender lead into the break.
Half-time:Reading 0-1 Aston Villa
Villa were almost gifted a golden opportunity for 2-0 when Al Habsi's pass out from the back towards Evans was short and Bacuna was within a whisker of intercepting it inside the Reading box, but thankfully it had enough on it to squirm to safety.
With eight minutes of the second half played, Reading levelled the scores! McCleary was set away with a well-weighted ball over the top and his legs were hooked from underneath him by Cissokho. The referee pointed to the spot and Danny Williams stepped up to take it...Gollini leapt to his right to save it, but Kermorgant directed a header from the rebound past the flailing Villa stopper and into the net for 1-1.
George Evans unleashed a sweetly struck effort from distance that Gollini did well to push behind for a corner, and from the set piece Kermorgant directed a header back across goal towards the top right corner - but this time Gollini could collect comfortably.
McCleary's pace was causing the visitors issues and he got in behind the back line again, doing enough to get the ball to Kermorgant who skipped past one then dinked a cross towards Beerens in the middle - but Gollini cut it out by plucking it out of the air.
Bacuna had a good chance to regain the lead soon after, but Al Habsi was down low to his right to save the midfielder's strike from 12 yards out. And Bacuna was pulling the strings for Villa, finding the side netting with a set piece that whistled inches wide.
Gollini parried a McCleary strike from the edge of the box with 20 minutes left on the clock, but Kodjia hammered high and wide when he found some space inside the Royals' area moments later. The match was on a knife edge.
A Beerens cross was met by the head of Evans, but it didn't have the power to trouble the Villa keeper. But as time ticked away, it was clear that one goal either way was going to settle it.
And it went the way of the visitors. Substitute Jordan Ayew jinked into the Reading box and went to ground after tripping over Liam Moore's leg. Referee Woolmer pointed to the spot for the second time in the match, and Ayew waited for Al Habsi to commit to a direction and then placed it into the bottom right corner to make it 2-1.
Full-time: Reading 1-2 Aston Villa
Reading: Al-Habsi, Gunter (c), Blackett, Van den Berg, Moore, Evans (Gravenberch 90), Williams, Swift, McCleary, Beerens, Kermorgant.
Subs: Jaakkola, Watson, Obita, Kelly, Harriott, Samuel.
Goals: Kermorgant (54)
Aston Villa: Gollini, Baker, Hutton, Bacuna, Chester (c), Cissokho (Amavi 77), Gardner, Jedinak, Adomah, Gestede (Ayew 77), Kodjia (McCormack 86).
Subs: Bunn, Westwood, Green, Tshibola.
Goals: Kodjia (38), Ayew (90 pen)
Att: 20,331 (4,030 away)