Promotion-chasing Reading made it six successive wins as substitute Adam Le Fondre's second-half goal gave them victory at Millwall.
The Royals were trailing at the Den after Harry Kane lofted a pass over the defence for Andy Keogh to finish.
But in first-half stoppage time Hal Robson-Kanu volleyed the Royals level from a corner.
Le Fondre completed the comeback when he tucked in Jason Roberts' cross at the far post.
The win continues Reading's charge up the Championship table and leaves them just a point behind second-placed West Ham, having played a game more.
However, despite their recent form, Brian McDermott's men were out of sorts for much of the first half.
They were punished by Keogh's 15th minute goal - the first the Royals have conceded in 490 minutes and only Millwall's second at home in the league this year.
However, late in the half they were given a lifeline as home keeper David Forde's punch from a corner fell to Robson-Kanu and he thumped a superb volley high into the net.
Millwall could have regained the lead but Kane missed James Henry's cross with the goal gaping.
The Lions paid for the miss with 15 minutes to go when Roberts broke the offside trap and laid the ball into the path of Le Fondre who made no mistake at the back post.
Millwall manager Kenny Jackett: "You have to grind results out, we had a deserved lead and matched an in-form Reading side.
"But ultimately it's two poor goals against us and that's been the difference. We haven't seen it through and been professional enough.
"We've tried everything to turn this home form around and it's only us who can get ourselves out of it. Too many times games like today have slipped through our fingers."
Reading manager Brian McDermott: "The pitch was difficult and to go one down here is not easy.
"We are on a great run and we are really pleased. We are trying to win every game, that's all we're concentrating on.
"The players have fantastic guts, they know how to win games, they know what's required and there's a really good camaraderie between everyone."
- 01 Forde
- 02 Dunne
- 03 Craig
- 05 Robinson
- 31 Lowry
- 08 Bouazza (Feeney - 71' )
- 14 Henry Booked (Mason - 83' )
- 26 Abdou
- 44 Wright
- 20 Keogh
- 37 Kane (N'Guessan - 79' )
- 13 Allsopp
- 18 Ward
- 15 Feeney
- 32 Mason
- 22 N'Guessan
- 01 Federici
- 03 Connolly (Tabb - 51' )
- 05 Pearce Booked
- 17 Gorkss
- 23 Harte
- 04 Karacan
- 08 Leigertwood
- 11 McAnuff
- 19 Robson-Kanu
- 10 Hunt (Le Fondre - 64' )
- 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:37
Alan Dunne concedes a free kick for a foul on Jason Roberts. Ian Harte takes the direct free kick.90:00 +1:41
Foul by Jobi McAnuff on Ryan Mason, free kick awarded. David Forde restarts play with the free kick.90:00 +0:41
Hal Robson-Kanu concedes a free kick for a foul on Liam Feeney. Free kick taken by Paul Robinson.89:18
Unfair challenge on Tony Craig by Jobi McAnuff results in a free kick. Josh Wright sends in a cross, Paul Robinson takes a shot. Save by Adam Federici.87:11
Ian Harte concedes a free kick for a foul on Liam Feeney. Alan Dunne takes the direct free kick.86:21
Andrew Keogh produces a right-footed shot from just outside the box that goes wide left of the goal.85:26
Free kick awarded for a foul by Jason Roberts on Shane Lowry. Paul Robinson takes the free kick.81:48
David Forde takes the direct free kick.81:48 Substitution
Substitution Ryan Mason on for James Henry.81:48
Free kick awarded for an unfair challenge on James Henry by Hal Robson-Kanu.78:07 Substitution
Substitution Harry Kane goes off and Dany N'Guessan comes on.75:31
The assist for the goal came from Jason Roberts.75:31 Goal scored
Goal! - Adam Le Fondre - Millwall 1 - 2 Reading Adam Le Fondre finds the back of the net with a goal from close in to the bottom right corner of the goal. Millwall 1-2 Reading.74:06
The referee blows for offside against Adam Le Fondre. David Forde takes the indirect free kick.70:46 Substitution
Substitution Liam Feeney on for Hamer Bouazza.69:59
Josh Wright has a shot and went wide right of the goal.67:16
Ian Harte takes a inswinging corner from the right by-line played to the near post, Andrew Keogh makes a clearance.63:22 Substitution
Substitution Adam Le Fondre replaces Noel Hunt.62:20
Foul by James Henry on Hal Robson-Kanu, free kick awarded. Ian Harte takes the direct free kick.
Harry Kane fouled by Jem Karacan, the ref awards a free kick. James Henry crosses the ball from the free kick right-footed from left wing.60:33
Noel Hunt is flagged offside by the assistant referee. David Forde takes the free kick.58:08
Andrew Keogh gives away a free kick for an unfair challenge on Jay Tabb. Free kick crossed left-footed by Ian Harte from left wing, clearance made by Shane Lowry.56:40
James Henry produces a left-footed shot from just outside the penalty box that misses to the left of the target.55:50
The assistant referee signals for offside against Hal Robson-Kanu. David Forde takes the free kick.53:09
Hamer Bouazza has a direct shot on goal from the free kick.53:09 Booking
Booking The referee shows Alex Pearce a yellow card.53:01
Foul by Alex Pearce on James Henry, free kick awarded.50:09 Substitution
Substitution (Reading) makes a substitution, with Jay Tabb coming on for Matthew Connolly.48:46
Unfair challenge on James Henry by Hal Robson-Kanu results in a free kick. Hamer Bouazza crosses the ball in from the free kick, Mikele Leigertwood makes a clearance.45:01
The referee gets the second half underway.45:00 +3:48 Half time
Half Time The referee blows for half time.45:00 +2:32 Goal scored
Goal! - Hal Robson-Kanu - Millwall 1 - 1 Reading Hal Robson-Kanu grabs a goal from just inside the penalty area to the top left corner of the goal. Millwall 1-1 Reading.45:00 +1:46
Ian Harte takes the inswinging corner, save by David Forde.45:00 +0:20
Corner taken by James Henry from the left by-line.42:28
Noel Hunt is ruled offside. Indirect free kick taken by David Forde.41:10
Long range shot from Harry Kane misses to the left of the target.39:12
Foul by Paul Robinson on Noel Hunt, free kick awarded. Strike on goal comes in from Ian Harte from the free kick.38:00
The referee blows for offside. David Forde takes the free kick.35:34
Free kick awarded for an unfair challenge on James Henry by Hal Robson-Kanu. Direct free kick taken by Alan Dunne.33:30
Outswinging corner taken by Jobi McAnuff from the right by-line, clearance by Andrew Keogh. Ian Harte takes the inswinging corner, Matthew Connolly challenges Alan Dunne unfairly and gives away a free kick. David Forde takes the free kick.31:40
Matthew Connolly concedes a free kick for a foul on Andrew Keogh. The free kick is delivered right-footed by James Henry from left channel.30:56 Booking
Booking James Henry is cautioned.26:01
Jason Roberts is flagged offside by the assistant referee. David Forde takes the free kick.24:40
Inswinging corner taken left-footed by Ian Harte from the right by-line to the near post, clearance by Paul Robinson.19:51
Hamer Bouazza takes a shot. Save made by Adam Federici.17:15
Mikele Leigertwood takes a shot.15:08
Assist by Harry Kane.15:08 Goal scored
Goal! - Andrew Keogh - Millwall 1 - 0 Reading Andrew Keogh fires in a goal from inside the box to the bottom left corner of the goal. Millwall 1-0 Reading.11:08
Ian Harte takes the inswinging corner, save made by David Forde.9:57
Hamer Bouazza fouled by Mikele Leigertwood, the ref awards a free kick. Free kick taken by David Forde.5:41
James Henry has a shot on goal from outside the box which misses right.4:54
Jason Roberts produces a right-footed shot from the edge of the area and misses to the left of the goal.3:27
James Henry produces a right-footed shot from just outside the box that goes wide right of the target.3:01
Alex Pearce concedes a free kick for a foul on Shane Lowry. David Forde takes the direct free kick.2:37
Unfair challenge on Jem Karacan by Josh Wright results in a free kick. Ian Harte restarts play with the free kick.0:00
The game kicks-off.
Live data and text provided by our data suppliers