Doncaster rallied late on when Billy Sharp pulled a goal back from the penalty spot after Royals defender Matt Mills was dismissed for handball, but Sean O'Driscoll's side were unable to avert their fourth defeat in as many matches.
James Coppinger and ex-Reading midfielder John Oster contributed speculative efforts from distance as Rovers began in confident fashion
In the 14th minute Reading's Joby McAnuff was brought down by James Chambers on the edge of the area and Brian Howard's arching left foot effort drew a superb fingertip save from veteran Rovers goalkeeper Neil Sullivan.
Midway through the first half Jimmy Kebe delivered a dangerous cross which Howard, starting his first game since November, met at the near post but he could not direct his header goalwards.
Brian McDermott's side took the lead seven minutes before half-time when Howard whipped in a delightful cross from the right flank and Shane Long rose above the Doncaster defence to head past Sullivan.
On the stroke of half-time Brian Stock released Chambers in search of the equaliser, but his cutback was stabbed wide by Coppinger.
Mills and Reading had a let-off eight minutes after the interval when the centre-back diverted a Chambers cross into the path of Dean Shiels, but the Rovers forward was off-balance and launched his volley a considerable distance over Adam Federici's goal.
On the hour the impressive Kebe suffered a calf strain and was replaced by Simon Church.
The Welsh forward had an opportunity to double the visitors' advantage within moments of coming on to the pitch when he headed wide from McAnuff's cross.
Sullivan needed to be at his best again to palm a probing Long effort out of the top corner after Doncaster had sloppily squandered possession to Church in midfield.
And as Rovers committed men forward, the visitors doubled their lead.
Church and Long combined to hustle Rovers out of possession deep inside their own half and the latter unselfishly slotted the ball to Howard, who capped a fine display with a deserved goal.
Doncaster came back into the game in dramatic fashion in the 79th minute when Mills was sent off for handling Coppinger's shot on the goalline and Sharp drilled home the resultant penalty.
The home side came agonisingly close to an equaliser when substitute James Hayter thundered an excellent strike against the crossbar in the final minute.
Federici had to show wonderful agility to claw away a deflected Sharp effort in the 95th minute, before tipping Stock's lob over the bar in the seventh minute of stoppage time.