Pavel Pogrebnyak grabbed the winner for Reading as they twice came back from a goal down to beat QPR in the third round of the Capital One Cup.
Junior Hoilett finished a solo run with a shot into the bottom corner to put the hosts ahead before Kaspars Gorkss headed in a leveller.
Djibril Cisse's powerful shot put QPR back in front only for Nicky Shorey's free-kick to haul Reading level again.
League Cup fourth-round draw:
- Sunderland v Middlesbrough
- Swindon v Aston Villa
- Wigan v Bradford
- Leeds v Southampton
- Norwich v Tottenham
- Liverpool v Swansea
- Chelsea v Manchester United
- Reading v Arsenal
Pogrebnyak flicked in a winner and even had a penalty saved as Reading won.
QPR keeper Julio Cesar kept out the injury-time spot-kick, awarded when Stephane Mbia fouled Pogrebnyak, but there was too little time left for the home side to make the most of it as the visitors held on to book their place in the last 16.
The two sides went into the match in the bottom two places in the Premier League and with just one win - from the last round of the Capital One Cup - from their outings so far this season.
QPR boss Mark Hughes made four changes, including giving summer signing Mbia his debut and Kieron Dyer his first start for 13 months.
Midfielder Dyer, like the home side, made a lively start as QPR quickly seized the upper hand.
They were rewarded for their early play when Hoilett struck with a lovely solo goal as he left several defenders in his slipstream before firing a low shot past keeper Alex McCarthy.
However, QPR barely had time to settle against a Reading side who had made seven changes, including giving Jimmy Kebe his first start of the season after his recovery from a hamstring injury.
Shorey swung in a free-kick which was met with a firm header by Gorkss, who did not celebrate scoring against his former club.
Both sides had chances either side of half-time as Kebe had a shot blocked, while QPR midfielder Jamie Mackie had an effort saved by McCarthy.
The game swung from end-to-end and it was the peripheral Cisse who eventually made his presence felt with a stunning strike which gave McCarthy no chance.
Reading again hit back almost immediately when Shorey's 25-yard free-kick went in off the underside of the crossbar.
The visiting side were eventually rewarded for their refusal to be shrugged off when Jay Tabb cut the ball back for Noel Hunt, who fed Russian Pogrebnyak to produce a deft finish for Reading's third.
Pogrebnyak was not made to pay for his stoppage time penalty miss as the Royals progressed to a home tie against Arsenal in the next round.
QPR manager Mark Hughes: "To lose it in the manner we did is disappointing but it is understandable to a certain extent given the changes and the injuries we have at the back.
"We haven't had that continuity at the back, which you need to bang results out.
"It is difficult at the moment because we're playing guys at different levels of fitness and we're trying to get everyone up to speed. That will come but we're just not there at the moment."
Reading manager Brian McDermott: "Our identity as a team is what you saw, what we're about, and I know if we perform at that level and that tempo with the way we pass the ball with pace then we are going to be more than capable in this league. No problem.
"I felt we needed to strip the team back to what we're about, really. In the last couple of games our tempo has been slow and we haven't been getting crosses into the box or creating too many chances.
"We really stripped the side back. We had good conversations in the dressing room and we wanted to get a result and we did that."
Live Text Commentary
Full Time The referee blows his whistle to end the game.90:00 +5:19
Pavel Pogrebnyak is caught offside. Free kick taken by Esteban Granero.90:00 +3:35
Unfair challenge on Jamie Mackie by Nicky Shorey results in a free kick. Esteban Granero crosses the ball in from the free kick. Djibril Cisse takes a shot from 12 yards. Jay Tabb gives away a free kick for an unfair challenge on Esteban Granero. Free kick taken by Soares Julio Cesar. Jay Tabb gets a block in.90:00 +2:41 Penalty
Placed penalty taken by Pavel Pogrebnyak saved by Soares Julio Cesar. QPR 2-3 Reading.90:00 +1:11
Pavel Pogrebnyak fouled by Stephane Mbia, the ref awards a Penalty.88:05
Jem Karacan challenges Bobby Zamora unfairly and gives away a free kick. Soares Julio Cesar restarts play with the free kick.86:55 Substitution
Substitution (QPR) makes a substitution, with Samba Diakite coming on for Alejandro Faurlin.84:14
Ryan Nelsen restarts play with the free kick.84:14 Booking
Booking Hal Robson-Kanu goes into the referee's book for unsporting behaviour.84:06
Free kick awarded for an unfair challenge on Esteban Granero by Hal Robson-Kanu.83:22
Hal Robson-Kanu produces a right-footed shot from the edge of the box and misses to the left of the target.82:26
Headed effort from deep inside the penalty area by Noel Hunt misses to the right of the target.80:43
The assist for the goal came from Hal Robson-Kanu.80:43 Goal scored
Goal! - Pavel Pogrebnyak - QPR 2 - 3 Reading Pavel Pogrebnyak fires in a goal from close range to the bottom left corner of the goal. QPR 2-3 Reading.79:51
Esteban Granero produces a right-footed shot from the edge of the box and misses to the right of the goal.77:05 Substitution
Substitution Sean Morrison on for Adrian Mariappa.77:05
Bobby Zamora fouled by Jem Karacan, the ref awards a free kick. Indirect free kick taken by Esteban Granero.75:38 Goal scored
Goal! - Nicky Shorey - QPR 2 - 2 Reading Nicky Shorey scores a goal direct from the free kick from long range to the top right corner of the goal. QPR 2-2 Reading.74:54
Hal Robson-Kanu takes a shot. Free kick awarded for an unfair challenge on Jay Tabb by Esteban Granero. Djibril Cisse gets a block in.71:43 Booking
Booking Djibril Cisse goes into the book.
Goal! - Djibril Cisse - QPR 2 - 1 Reading Djibril Cisse finds the net with a goal from outside the penalty area to the top right corner of the goal. QPR 2-1 Reading.70:00
Djibril Cisse is flagged offside by the assistant referee. Alex McCarthy restarts play with the free kick.68:52 Substitution
Substitution Jimmy Kebe goes off and Garath McCleary comes on.67:32
The official flags Pavel Pogrebnyak offside. Soares Julio Cesar restarts play with the free kick.66:22 Substitution
Substitution Bobby Zamora replaces Ji-Sung Park.64:17 Substitution
Substitution Ryan Nelsen replaces Kieron Dyer.60:46
Direct free kick taken by Nedum Onuoha.60:46 Booking
Booking Jimmy Kebe receives a yellow card.60:37
Unfair challenge on Nedum Onuoha by Jimmy Kebe results in a free kick.58:01
Corner taken by Esteban Granero from the right by-line played to the near post, Hal Robson-Kanu manages to make a clearance.56:38
The offside flag is raised against Pavel Pogrebnyak. Indirect free kick taken by Kieron Dyer.56:24
Ji-Sung Park takes a shot. Alex McCarthy makes a save.54:40
David Hoilett concedes a free kick for a foul on Shaun Cummings. Direct free kick taken by Adrian Mariappa.53:31
The offside flag is raised against Noel Hunt. Soares Julio Cesar takes the indirect free kick.52:36
Nicky Shorey takes the inswinging corner, clearance made by Kieron Dyer.52:14
The assistant referee signals for offside against Djibril Cisse. Free kick taken by Kaspars Gorkss.51:05
Jamie Mackie takes a shot. Alex McCarthy makes a save. Alejandro Faurlin produces a left-footed shot from the edge of the box and misses to the right of the target.50:07
The referee blows for offside against Djibril Cisse. Adrian Mariappa takes the direct free kick.47:10
Effort from inside the area by Noel Hunt misses to the right of the target. Inswinging corner taken left-footed by Nicky Shorey, clearance made by Soares Julio Cesar.46:29
Effort from the edge of the area by Djibril Cisse goes wide of the right-hand upright.45:01
The second half begins.45:00 +2:04 Half time
Half Time The match has reached half-time.45:00 +0:25
Esteban Granero takes a shot. Adrian Mariappa gets a block in.43:34
Free kick awarded for a foul by Pavel Pogrebnyak on Ji-Sung Park. Esteban Granero crosses the ball, David Hoilett produces a header from inside the area that goes over the crossbar.42:11
Clint Hill takes a inswinging corner from the left by-line to the near post.40:09
Jamie Mackie is flagged offside by the assistant referee. Alex McCarthy takes the indirect free kick.37:01
Noel Hunt concedes a free kick for a foul on Soares Julio Cesar. Direct free kick taken by Stephane Mbia.36:03
Nedum Onuoha concedes a free kick for a foul on Jimmy Kebe. Nicky Shorey delivers the ball from the free kick left-footed from right wing, save by Soares Julio Cesar.35:15
Unfair challenge on Jay Tabb by Alejandro Faurlin results in a free kick. Alex McCarthy takes the indirect free kick.31:49
The official flags Djibril Cisse offside. Direct free kick taken by Adrian Mariappa.29:48
Hal Robson-Kanu takes a shot. Inswinging corner taken left-footed by Nicky Shorey played to the near post, clearance by Jamie Mackie. Shot from just outside the area by Djibril Cisse misses to the right of the target.28:56
Inswinging corner taken by Nicky Shorey from the right by-line. Adrian Mariappa gives away a free kick for an unfair challenge on Ji-Sung Park. Indirect free kick taken by Soares Julio Cesar.27:19
Esteban Granero takes a shot. Blocked by Adrian Mariappa.26:22
Direct free kick taken by Nicky Shorey.26:22 Booking
Booking Stephane Mbia booked.26:05
Ji-Sung Park gives away a free kick for an unfair challenge on Jimmy Kebe.25:27
Noel Hunt is ruled offside. Soares Julio Cesar restarts play with the free kick.24:21
Noel Hunt is caught offside. Direct free kick taken by Stephane Mbia.21:53
Inswinging corner taken left-footed by Nicky Shorey from the left by-line, Alejandro Faurlin makes a clearance.21:05
Clint Hill challenges Pavel Pogrebnyak unfairly and gives away a free kick. Jimmy Kebe restarts play with the free kick.18:52
Stephane Mbia takes a shot. Save made by Alex McCarthy.18:24
Free kick awarded for a foul by Shaun Cummings on Ji-Sung Park. Esteban Granero takes the free kick.17:32
Foul by Esteban Granero on Jay Tabb, free kick awarded. Jay Tabb takes the direct free kick.16:45
Free kick awarded for a foul by Noel Hunt on Clint Hill. Free kick taken by Stephane Mbia.15:29
Assist by Nicky Shorey.15:29 Goal scored
Goal! - Kaspars Gorkss - QPR 1 - 1 Reading Kaspars Gorkss finds the back of the net with a headed goal from inside the six-yard box. QPR 1-1 Reading.15:09
Kieron Dyer gives away a free kick for an unfair challenge on Pavel Pogrebnyak. Free kick crossed by Nicky Shorey.13:51
Assist by Ji-Sung Park.13:51 Goal scored
Goal! - David Hoilett - QPR 1 - 0 Reading Goal scored by David Hoilett from inside the penalty box to the bottom left corner of the goal. QPR 1-0 Reading.11:42
Esteban Granero takes a inswinging corner from the left by-line played to the near post.4:36
Foul by Clint Hill on Noel Hunt, free kick awarded. Free kick taken by Nicky Shorey.3:45
Noel Hunt takes a shot. Blocked by Clint Hill.2:29
Jay Tabb concedes a free kick for a foul on Alejandro Faurlin. Esteban Granero restarts play with the free kick.0:00
The game kicks-off.
Live data and text provided by our data suppliers