David James showed his class with a stunning point-blank save to keep out another Hulse header, while Jamie Mackie and Taarabt both fired wide.
City's best attacks came when Campbell-Ryce forced a save from Paddy Kenny, while the Rangers keeper also had to be alert to smother a Pitman effort.
But five minutes after the break Rangers were behind after a bad mistake from Hill, whose weak backward header was nowhere near Kenny and allowed Pitman to score his eighth goal in as many games.
But Taarabt showed good skill down the left and produced a perfect pull-back for Faurlin to slot home from 10 yards.
In the 84th minute referee Fred Graham deemed Elliott had held back Hulse and Taarabt netted from the penalty spot.
But with Rangers' fans sensing victory, Caulker rose high to provide the late twist which ensured the game finished all square.
Live text and stats
Monday, 3 January 2011
Taarabt (pen) 85
02 Orr yellow card
07 Taarabt (Moen 87)
36 Caulker yellow card
07 Elliott yellow card
08 Johnson (Stewart 88)
27 Adomah (Haynes 73)
30 Stead (Clarkson 66)
34 Pitman yellow card
Ref: GrahamAtt: 15,618
Attempts on target
Attempts off target
90:00+4:09 The referee blows his whistle to end the game.
90:00+3:35 Tommy Smith takes a shot from close in clearing the crossbar.
90:00+2:18 Marvin Elliott handles the ball and concedes a free kick. Kyle Walker delivers the ball from the free kick right-footed from
left channel, save made by David James.
90:00+1:11 Outswinging corner taken from the right by-line by Jamal Campbell-Ryce, assist on the goal came from Jamal Campbell-Ryce.
90:00+1:11 Booking Steven Caulker goes into the referee's book.
90:00+0:43 GOAL - Steven Caulker:QPR 2 - 2 Bristol City Steven Caulker scores a goal from inside the six-yard box high into the middle of the goal. QPR 2-2 Bristol City.
90:00+0:12 Jamal Campbell-Ryce takes a shot. Save by Patrick Kenny.
89:46 Corner taken by Brett Pitman from the left by-line played to the near post, Shaun Derry manages to make a clearance.
88:49 Marvin Elliott challenges Petter Vaagan Moen unfairly and gives away a free kick. Free kick taken by Clint Hill.
87:14 Substitution Damion Stewart on for Lee Johnson.
86:26 Substitution Petter Vaagan Moen is brought on as a substitute for Adel Taarabt.
85:35 Jamal Campbell-Ryce takes a shot. Save made by Patrick Kenny.
84:44 Unfair challenge on Rob Hulse by Marvin Elliott results in a Penalty.
84:44 GOAL - Adel Taarabt:QPR 2 - 1 Bristol City Adel Taarabt scores a penalty. QPR 2-1 Bristol City.
83:39 Booking Marvin Elliott goes into the book.
82:29 Jamal Campbell-Ryce gives away a free kick for an unfair challenge on Jamie Mackie. Adel Taarabt crosses the ball from the
free kick right-footed from right channel, clearance made by Brett Pitman.
81:37 Kyle Walker produces a right-footed shot from outside the penalty box and misses wide left of the target.
79:19 Adel Taarabt fouled by Cole Skuse, the ref awards a free kick. Adel Taarabt takes the direct free kick.
77:29 Brett Pitman fouled by Clint Hill, the ref awards a free kick. Direct free kick taken by Cole Skuse.
75:02 Free kick awarded for an unfair challenge on Adel Taarabt by Brett Pitman. Direct free kick taken by Kyle Walker.
75:02 Booking Caution for Brett Pitman.
74:33 Shot by Jamie Mackie. Steven Caulker gets a block in.
72:56 Substitution Danny Haynes joins the action as a substitute, replacing Albert Adomah.
69:40 Cole Skuse gives away a free kick for an unfair challenge on Rob Hulse. Direct free kick taken by Kyle Walker.
68:36 Corner taken right-footed by Adel Taarabt to the near post, clearance by Cole Skuse.
66:30 Adel Taarabt decides to take the corner short.
65:45 Substitution David Clarkson on for Jonathan Stead.
64:00 Adel Taarabt takes a inswinging corner from the left by-line played to the near post, Brett Pitman manages to make a clearance.
62:55 Corner taken by Adel Taarabt from the right by-line, clearance made by Kalifa Cisse.
61:24 Shaun Derry concedes a free kick for a foul on Jamal Campbell-Ryce. Brett Pitman crosses the ball from the free kick right-footed
from left wing.
57:02 Shot from deep inside the area by Rob Hulse clears the bar.
52:24 The assist for the goal came from Adel Taarabt.
52:24 GOAL - Alejandro Faurlin:QPR 1 - 1 Bristol City Alejandro Faurlin gets on the score sheet with a goal from inside the box low into the middle of the goal. QPR 1-1 Bristol
50:57 Effort on goal by Kyle Walker from a long way out goes over the bar.
49:20 GOAL - Brett Pitman:QPR 0 - 1 Bristol City Goal scored by Brett Pitman from inside the penalty box to the bottom left corner of the goal. QPR 0-1 Bristol City.
48:20 Corner from left by-line taken by Adel Taarabt.
45:31 Adel Taarabt takes a shot. Blocked by Marvin Elliott.
45:01 The second half kicks off.
45:00+1:05 The first half comes to an end.
45:00+0:11 Rob Hulse has a headed effort from close in and clears the bar.
44:27 Shot by Rob Hulse from inside the six-yard box clear the bar.
43:40 Corner taken by Adel Taarabt from the right by-line, clearance made by Kalifa Cisse.
43:00 Inswinging corner taken from the left by-line by Adel Taarabt, save made by David James.
40:22 Brett Pitman takes a shot. Save made by Patrick Kenny.
36:27 Long range shot by Adel Taarabt goes wide right of the net.
36:14 Unfair challenge on Tommy Smith by Lee Johnson results in a free kick. Free kick taken by Tommy Smith.
32:42 Lewin Nyatanga concedes a free kick for a foul on Jamie Mackie. Free kick crossed right-footed by Adel Taarabt, clearance
by Lewin Nyatanga.
31:17 Shot on goal by Alejandro Faurlin from long range goes harmlessly over the target.
30:46 The offside flag is raised against Albert Adomah. Free kick taken by Patrick Kenny.
30:04 Inswinging corner taken right-footed by Adel Taarabt played to the near post, clearance made by Lewin Nyatanga.
28:49 Jamal Campbell-Ryce takes a shot. Save by Patrick Kenny.
26:37 Jamie Mackie produces a right-footed shot from just outside the penalty box that goes wide left of the target.
25:07 Bradley Orr challenges Jamal Campbell-Ryce unfairly and gives away a free kick. Brett Pitman takes the free kick.
25:07 Booking Bradley Orr is given a yellow card.
20:39 Rob Hulse takes a shot. Save by David James.
19:30 Foul by Bradley Orr on Lewin Nyatanga, free kick awarded. Lewin Nyatanga takes the direct free kick.
18:35 Jamie Mackie has an effort at goal from a long way out that goes wide left.
17:46 The referee blows for offside against Jamie Mackie. Indirect free kick taken by David James.
17:10 Adel Taarabt takes a shot. David James makes a save.
15:38 Shot on goal by Shaun Derry from just inside the area clears the crossbar.
14:32 Brett Pitman is ruled offside. Patrick Kenny restarts play with the free kick.
12:55 Close range headed effort by Tommy Smith misses to the right of the target.
12:19 Outswinging corner taken from the right by-line by Adel Taarabt.
12:02 Kyle Walker takes a shot. Kalifa Cisse gets a block in.
10:23 Unfair challenge on Adel Taarabt by Marvin Elliott results in a free kick. Direct free kick taken by Alejandro Faurlin.
9:47 Clint Hill challenges Brett Pitman unfairly and gives away a free kick. Lee Johnson restarts play with the free kick.
9:11 Rob Hulse has a headed effort at goal from close in which goes wide right of the target.
4:49 Adel Taarabt has a shot on goal from long range that goes wide left.
4:17 Marvin Elliott gives away a free kick for an unfair challenge on Adel Taarabt. Free kick crossed right-footed by Adel Taarabt
from left wing, Cole Skuse makes a clearance.
2:22 Free kick awarded for an unfair challenge on Lewin Nyatanga by Rob Hulse. Lewin Nyatanga takes the free kick.
0:23 Inswinging corner taken by Brett Pitman.
0:00 The ref blows the whistle to begin the match.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.