Cardiff City came from behind to win at Reading for the first time since 2011 as substitute Will Vaulks' 85th-minute goal earned the Bluebirds a 2-1 win.
Lucas Joao's close-range header put Reading ahead after only seven minutes.
Reading were in control, but Cardiff punished their failure to add a second when Alfie Doughty equalised.
The Bluebirds were in the ascendancy after the equaliser and Vaulks put them ahead after Tommy Doyle's through ball put him clear of the Reading defence.
Reading, who remain eight points clear of the relegation zone, have now lost seven Championship games this season that they have led.
Royals boss Paul Ince made one change to the side that recorded a vital 2-1 win over Stoke in midweek, with Ovie Ejaria replaced by Ince's son, Tom Ince.
Cardiff City boss Steve Morison, fresh from winning the Championship manager of the month award for March, made four changes to the side humiliated 4-0 by Swansea in the south Wales derby last weekend.
Goalkeeper Alex Smithies was dropped from the squad completely, with Morison switching to a back four that included Curtis Nelson, recalled for the first time since January.
Morison had spoken about the need to shrug off the disappointment of the Swansea defeat, but Cardiff made the worst possible start, falling behind in the opening 10 minutes in Berkshire.
The Bluebirds were undone by a clever exchange between Ince and Andy Yiadom that culminated in Yiadom crossing perfectly for Joao to head home at the back post.
Joao headed off target from John Swift's dangerous free-kick, with Cardiff rarely threatening in the first half, other than when Jordan Hugill just failed to make contact with Rubin Colwill's dangerous cross.
It was Colwill's mistake that almost gifted Reading a second on 36 minutes when he gave the ball away, but goalkeeper Dillon Phillips spared his blushes by smothering as Swift charged clear.
The Royals began the second half with another good opportunity, but Perry Ng just got in front of Joao to deny him a second, with Cardiff finally registering a shot on target on 49 minutes when Colwill's effort was well saved by Orjan Nyland.
Reading's failure to add to the scoring despite their dominance came back to haunt the hosts on 59 minutes when Doughty scored his first goal of the season as he curled the ball beyond Nyland after Joe Ralls' pass split the Royals' defence.
That was Ralls' last contribution as he was forced off by injury, with Vaulks replacing him.
The Wales midfielder completed Cardiff's comeback, latching on to Doyle's through ball and applying a calm finish with five minutes remaining.
A series of stoppages lead to seven minutes of injury time, but Reading could not recover from the disappointment of falling behind, with Cardiff remaining 17th in the Championship and now mathematically safe from relegation.
Reading: Nyland, Yiadom, Morrison, Holmes, McIntyre, Laurent, Drinkwater, Ince (Barker 87'), Swift (Azeez 77'), Hoilett (Dele-Bashiru 60'), Joao. Subs not used: Thomas, Ejaria, Rahman, Southwood.
Cardiff City: Phillips, Ng, Nelson, Bagan, Drameh, Wintle, Ralls (Vaulks 64'), Doyle, Doughty (Davies 74'), Colwill, Hugill (Ikpeazu 90'). Subs not used: Luthra, McGuinness, Flint, Harris.