Two late goals from Pavel Pogrebnyak kept alive Reading’s play-off hopes and condemned Doncaster to a nervy final game to avoid relegation.
Rovers were the better side at the start and went in front with a 25th-minute goal from James Coppinger as Reading struggled to find their form.
But the visitors turned the tables after the interval and levelled the scores thanks to a 63rd-minute penalty from Adam Le Fondre.
Doncaster battled in vain to restore their lead and were left with nothing to show for a brave display when Pogrebnyak struck in the closing stages.
It means Doncaster face the daunting task of travelling to champions Leicester next Saturday needing to win to have any hope of avoiding relegation.
Both sides needed a victory and it was end-to-end action from the start.
But the play-off chasing visitors looked more nervous than their relegation-threatened rivals, who forced the pace and played the better football.
Reading boss Nigel Adkins cut an agitated figure on the touchline as he tried to urge his players on.
But when the Royals did press forward they found Abdoulaye Meite in outstanding form in the home defence.
Meite, playing after having a red card rescinded at Millwall last week, was strong in the tackle and won virtually everything in the air.
Doncaster deservedly took the lead in the 25th minute with Billy Sharp, who spent a loan spell at Reading earlier in the year, setting up the chance.
Sharp latched onto a short pass and crossed to the unmarked Coppinger, who slipped the ball home confidently from the far side of the box.
Coppinger returned the favour 10 minutes later with a superb cross from the right but Sharp’s powerful near-post header was well saved by Alex McCarthy.
Reading finished the half not having managed a single shot on target.
Doncaster continued to play in enterprising fashion after the break but Reading were coming more and more into the game boosted by a half-time pep talk.
The visitors had lost their nerve and looked a different side but a penalty saw them finally find the net.
Paul Quinn clipped Le Fondre’s legs as he raced through on a diagonal run in the box and the referee immediately pointed to the spot.
Le Fondre picked himself up and drove home the penalty under Sam Johnstone as he dived to his right.
Doncaster immediately tried to respond but Chris Brown was just unable to connect with a right-wing cross from Paul Keegan with the goal gaping.
Le Fondre missed a great chance at the other end when he completely miscued after Garath McCleary had set up the chance.
But Pogrebnyak made no mistake with two late goals to snatch victory for Reading to the delight of the travelling fans.
Jake Taylor supplied the cross for Pogrebnyak to head home at the far post in the 87th minute and Doncaster were caught pushing forward in search of an equaliser when he put the issue beyond doubt deep into stoppage time.
A quick breakaway led to Alex Pearce putting Pogrebnyak through to fire home from close range, ending Rovers’ brave resistance and snatching three points which had looked unlikely earlier in the match.
Disappointed Doncaster boss Paul Dickov said: “We were all gutted in the dressing room afterwards but we will get it out of our systems before we go again in the final match at Leicester.
“We came out fighting in the first half and put ourselves in a good position with the goal but you have to give Reading credit for battling back.
“I didn’t have a clear view of the penalty incident so I can’t comment on that but the other two goals they scored were poor from our point of view.
“We didn’t allow them to play in the first half but we went a little gung ho after they had equalised from a penalty that came from a goal-kick.
“A point might not have been a bad result for us as it happens but we went for it and had a go.
“Now it’s all down to the last match against my old club - who won’t be doing us any favours - but I’m still confident we can avoid going down.
“There was drama at this club on the last game last season when we went up by winning at Brentford and there can be drama again at Leicester.
“Whatever happens, we’ll go there and give it all we’ve got because we want to stay in this division - and we can’t rely on other results going our way.”