Reading saw their eight-game winning streak in the Championship come to an end as they were held to a draw by relegation-threatened Doncaster.
The visitors missed three good chances to open the scoring before Kyle Bennett prodded home El-Hadji Diouf's cross to put the hosts ahead.
Doncaster keeper Carl Ikeme saved well from Noel Hunt and Jem Karacan.
Alex Pearce nodded Ian Harte's corner in to level but despite late pressure Reading could not force a winner.
However, the point was enough for them to move into the automatic promotion places, while Rovers remain unbeaten in five and are now three points adrift of safety.
It might have turned out differently had Reading seized their chances to take an early lead, but Diouf cleared Pearce's powerful header from Harte's corner off the line.
Harte's deliveries were causing chaos in Rovers' six-yard box in the opening 15 minutes and Pearce missed another chance from three yards before Mikele Leigertwood headed over with Ikeme stranded.
Doncaster could easily have been 3-0 down, but with their first real opening they struck and it was a superb team goal.
The hosts manoeuvred the ball to the right, where Diouf played a one-two with James Coppinger and whipped in a low cross which Bennett converted at the far post.
They had Ikeme to thank for going into half-time ahead - he first scooped away Hunt's downward header and then kept out a low Karacan effort.
But Reading finally made one of Harte's deliveries count after the restart when a deep corner was met by Pearce, who made no mistake from five yards out.
Rovers twice went close to restoring their lead through Frederic Piquionne's header and a Giles Barnes volley.
Habib Beye glanced a header wide after good wing play by Coppinger before Reading flooded forward in the final 15 minutes.
Pearce was denied again as Sam Hird cleared off the line before Jason Roberts, Hunt and Kaspar Gorkss all went close.
Doncaster boss Dean Saunders: "Reading have won eight in a row and we've stopped them so we have got to take confidence from that.
"No one else has stopped them recently. It's a point nearer safety and we are hard to play against."
Reading manager Brian McDermott: "This was never going to be easy, you have to give credit to Doncaster, they have got players who can hurt you.
"They were throwing bodies in at the end to keep the ball out and that's how it is, you don't expect to come anywhere and get an easy game."
- 27 Ikeme
- 14 Spurr
- 21 Hird
- 39 Chimbonda
- 41 Beye Booked
- 17 Barnes
- 18 Gillett
- 26 Coppinger
- 10 Diouf Booked
- 19 Piquionne
- 23 Bennett
- 11 Lockwood
- 31 Ilunga
- 16 Oster
- 12 Hayter
- 22 Robert
- 01 Federici
- 05 Pearce
- 17 Gorkss Booked
- 23 Harte
- 24 Cummings
- 04 Karacan Booked (Tabb - 64' )
- 08 Leigertwood
- 11 McAnuff
- 19 Robson-Kanu (Le Fondre - 64' )
- 10 Hunt Booked
- 33 Roberts
- 31 Andersen
- 07 Tabb
- 41 Cywka
- 09 Le Fondre
- 18 Church
Live Text Commentary
Full Time The game is over, as the referee blows his whistle.90:00 +3:29
Adam Federici takes the free kick.90:00 +3:29 Booking
Booking Booking for El-Hadji Diouf.90:00 +2:47
Effort on goal by Kaspars Gorkss from just inside the penalty box goes harmlessly over the target.90:00 +1:59
Noel Hunt takes a shot. Save by Carl Ikeme. Inswinging corner taken by Ian Harte from the right by-line, clearance by Frederic Piquionne.90:00 +1:38
Corner from the right by-line taken by Ian Harte, clearance by Frederic Piquionne.90:00 +1:25
Jason Roberts takes a shot. Save by Carl Ikeme.90:00 +0:28
Shot from just outside the area by Frederic Piquionne goes over the bar.86:39
Unfair challenge on James Coppinger by Jay Tabb results in a free kick. Carl Ikeme restarts play with the free kick.85:56
Jay Tabb fouled by Simon Gillett, the ref awards a free kick. Ian Harte crosses the ball from the free kick left-footed from right channel, save by Carl Ikeme.83:53
Inswinging corner taken by Ian Harte from the right by-line.83:22
Sam Hird challenges Adam Le Fondre unfairly and gives away a free kick. Free kick taken by Ian Harte.82:44
Shot by Adam Le Fondre from deep inside the penalty area misses to the left of the target.79:55
Pascal Chimbonda crosses the ball, clearance by Kaspars Gorkss.79:13
Unfair challenge on Jobi McAnuff by James Coppinger results in a free kick. Ian Harte takes the direct free kick.78:22
Unfair challenge on James Coppinger by Ian Harte results in a free kick. Free kick crossed right-footed by James Coppinger, Alex Pearce makes a clearance.76:43
Pascal Chimbonda concedes a free kick for a foul on Jason Roberts. The ball is crossed by Ian Harte, Alex Pearce takes a shot. Tommy Spurr gets a block in. Corner from right by-line taken by Ian Harte.75:08
The ball is sent over by James Coppinger, Headed effort from deep inside the area by Giles Barnes misses to the left of the goal.74:16
Inswinging corner taken by El-Hadji Diouf from the left by-line played to the near post, clearance by Alex Pearce.70:40
Kyle Bennett has shot on goal from just outside the area which goes wide of the right-hand upright.
Giles Barnes produces a right-footed shot from just outside the penalty box that misses to the left of the target.66:44
Simon Gillett challenges Adam Le Fondre unfairly and gives away a free kick. Direct free kick taken by Mikele Leigertwood.63:34 Substitution
Substitution (Reading) makes a substitution, with Jay Tabb coming on for Jem Karacan.63:34 Substitution
Substitution Hal Robson-Kanu leaves the field to be replaced by Adam Le Fondre.62:38
Corner taken right-footed by El-Hadji Diouf to the near post, Headed effort from inside the area by Frederic Piquionne misses to the left of the target.59:45
Free kick crossed left-footed by Ian Harte from right wing, clearance by El-Hadji Diouf.59:45 Booking
Booking Habib Beye receives a caution.59:40
Unfair challenge on Jobi McAnuff by Habib Beye results in a free kick.58:08
Foul by Pascal Chimbonda on Hal Robson-Kanu, free kick awarded. Ian Harte restarts play with the free kick.57:26
Giles Barnes produces a right-footed shot from the edge of the box and misses to the right of the goal.55:33
El-Hadji Diouf crosses the ball from the free kick right-footed from right wing.55:33 Booking
Booking Booking for Kaspars Gorkss for unsporting behaviour.55:23
Kaspars Gorkss gives away a free kick for an unfair challenge on El-Hadji Diouf.53:45
Outswinging corner taken right-footed by El-Hadji Diouf, clearance by Alex Pearce.52:21
Carl Ikeme takes the direct free kick.52:21 Booking
Booking Caution for Noel Hunt.52:10
Free kick awarded for an unfair challenge on Sam Hird by Noel Hunt.51:36
Noel Hunt concedes a free kick for a foul on Tommy Spurr. Sam Hird restarts play with the free kick.50:29
Assist by Ian Harte.50:29 Goal scored
Goal! - Alex Pearce - Doncaster 1 - 1 Reading Alex Pearce grabs a headed goal from inside the six-yard box. Doncaster 1-1 Reading.50:11
Ian Harte takes the inswinging corner,49:39
Inswinging corner taken left-footed by Ian Harte played to the near post, clearance by Frederic Piquionne.48:49
Foul by Simon Gillett on Noel Hunt, free kick awarded. Ian Harte has an effort direct from the free kick, Simon Gillett gets a block in.47:37
Corner taken left-footed by Ian Harte from the left by-line to the near post, clearance by El-Hadji Diouf.45:01
The game restarts for the second half.45:00 +2:20 Half time
Half Time The referee blows for half time.45:00 +1:14
Simon Gillett shoots direct from the free kick.45:00 +1:14 Booking
Booking The referee cautions Jem Karacan for unsporting behaviour.45:00 +0:54
Foul by Jem Karacan on Simon Gillett, free kick awarded.45:00 +0:18
Corner taken right-footed by Jobi McAnuff from the left by-line, clearance by Sam Hird.45:00 +0:03
Simon Gillett takes a shot. Adam Federici makes a save.44:09
Free kick awarded for an unfair challenge on El-Hadji Diouf by Mikele Leigertwood. El-Hadji Diouf takes the free kick.43:16
Jobi McAnuff takes a shot. Save by Carl Ikeme.41:39
Outswinging corner taken left-footed by Ian Harte from the left by-line to the near post, clearance by Pascal Chimbonda.41:14
Corner taken left-footed by Ian Harte from the right by-line, clearance made by Sam Hird.40:51
Jobi McAnuff sends in a cross, Hal Robson-Kanu takes a shot. Save made by Carl Ikeme.37:46
Corner taken short by El-Hadji Diouf.36:44
Foul by Jason Roberts on Sam Hird, free kick awarded. Free kick taken by Carl Ikeme.34:04
The official flags Frederic Piquionne offside. Adam Federici restarts play with the free kick.33:22
The ball is sent over by Shaun Cummings, save by Carl Ikeme.31:50
Jason Roberts takes a shot. Save made by Carl Ikeme.31:29
Habib Beye challenges Jason Roberts unfairly and gives away a free kick. Ian Harte restarts play with the free kick.30:51
Unfair challenge on El-Hadji Diouf by Shaun Cummings results in a free kick. The free kick is delivered right-footed by El-Hadji Diouf from left wing, Kaspars Gorkss makes a clearance.29:40
Hal Robson-Kanu fouled by Giles Barnes, the ref awards a free kick. Ian Harte takes the free kick.26:07
Assist on the goal came from El-Hadji Diouf.26:07 Goal scored
Goal! - Kyle Bennett - Doncaster 1 - 0 Reading Kyle Bennett fires in a goal from close range to the bottom left corner of the goal. Doncaster 1-0 Reading.24:22
Shaun Cummings fouled by Tommy Spurr, the ref awards a free kick. Centre by Ian Harte, Headed effort from deep inside the area by Noel Hunt misses to the right of the goal.22:28
Jason Roberts has an effort at goal from just outside the area which goes wide of the left-hand post.21:05
Foul by El-Hadji Diouf on Alex Pearce, free kick awarded. Free kick taken by Alex Pearce.18:51
The assistant referee flags for offside against El-Hadji Diouf. Indirect free kick taken by Adam Federici.17:43
Inswinging corner taken from the right by-line by Ian Harte, Alex Pearce produces a header from inside the area that goes over the crossbar.16:36
Shot from outside the box by Kyle Bennett misses to the left of the target.12:46
Giles Barnes takes a shot. El-Hadji Diouf gets a block in. The referee blows for offside against El-Hadji Diouf. Adam Federici takes the free kick.12:36
The ball is swung over by James Coppinger, save by Adam Federici.11:44
Corner taken right-footed by Jobi McAnuff from the left by-line to the near post, El-Hadji Diouf makes a clearance.9:14
Kaspars Gorkss concedes a free kick for a foul on Frederic Piquionne. El-Hadji Diouf crosses the ball from the free kick right-footed from right channel, clearance made by Shaun Cummings.7:05
Corner taken left-footed by Ian Harte, Header from close range by Kaspars Gorkss misses to the right of the target.4:16
Shot by Pascal Chimbonda from outside the area goes high over the crossbar.3:05
Ian Harte takes the inswinging corner, Kaspars Gorkss takes a shot. El-Hadji Diouf makes a clearance.1:01
The ball is sent over by Kyle Bennett, save made by Adam Federici.0:00
The game gets underway.
Live data and text provided by our data suppliers