Reading had former Doncaster Rovers defender Matt Mills sent off ten minutes from time but hung on to clinch a 2-1 victory in a dramatic finish.
They looked to have had the match sewn up after taking a 2-0 lead but Rovers pulled one back from the penalty spot after Mills was adjudged to have handled the ball.
Hard-working Irish striker Shane Long had given Reading the lead in the 39th minute against the run of the play with a splendid header.
Doncaster struggled to battle back and Brian Howard added a second in the 77th minute before the Rovers revival.
Doncaster had lost their last three games but started full of confidence with skipper Brian Stock pulling the strings in midfield.
James Coppinger had an early shot saved before Mark Wilson fired just wide from 20 yards following a slick passing move.
Reading worked hard to close Doncaster down and Howard had a free-kick tipped away by Neil Sullivan before heading wide in the 23rd minute.
But the home side had much more of the play with John Oster and Billy Sharp going close before Long rocked them in the 39th minute.
Howard crossed from the right and Long gave home keeper Sullivan no chance with a close-range header.
Doncaster looked a ragged side by comparison in the second period and it looked to be all over when Howard rolled home a left-foot shot past the unsighted Sullivan following excellent play by Simon Church and Long.
But when Mills was adjudged to have handled a firm shot from Gareth Roberts in the 81st minute, Sharp slammed home the resulting penalty to set up a grandstand finish.
Rovers threw everything at the visitors with substitute James Hayter rattling the crossbar in the 89th minute before Stock had a lobbed effort brilliantly tipped over the bar by Adam Federici in the sixth minute of stoppage time as Reading held on for the victory.