Charlie Austin gave Rangers a first half lead with a neat finish in front of watching England manager Roy Hodgson before Sergio Aguero levelled matters on 32 minutes.
A Martin Demichelis own goal looked like it had given Rangers a crucial win in their battle to escape the drop zone before Aguero netted a second equaliser with eight minutes remaining as City dropped further behind leaders Chelsea in the Premier League title race.
But it was Rangers, who remain in the bottom three in spite of picking up a point against the champions, who were left aggrieved not to gain all three with referee Mike Dean the centre of attention.
City and Joe Hart had a lucky escape on eight minutes when Austin – who moments earlier had a goal ruled out for offside – profited from a weak free kick by the England goalkeeper to fire in. Hart indicated to Dean he had accidentally taken two touches and the effort was disallowed, prompting protests from the home players.
QPR were up in arms again when Hart denied Austin with a fine save on 14 minutes after Bobby Zamora caused chaos in the City defence. From the resulting corner, there was a huge appeal for handball against Bacary Sagna as the ball appeared to strike the former Arsenal defender on the arm but Dean waved away the protests.
Dean continued to be the target for the home fans’ ire when he booked Sandro for a lunge on Yaya Toure moments after letting a sliding challenge by Gael Clichy on Eduardo Vargas go unpunished
Austin finally got the better of Hart when he beat City’s offside trap on 20 minutes to latch onto Vargas’ pass to shoot beyond the England keeper for his sixth goal of the season.
City were struggling to get a foothold in the game but Toure fired in a terrific left-foot curler which narrowly cleared the bar.
But Aguero got City level when he superbly controlled Eliaquim Mangala’s long ball before turning inside Steven Caulker and firing beyond Rob Green, who protested furiously that the Argentine used his hand in the build-up.
A bad slip by Fernando allowed Austin the chance to put the home side back in front but again Hart was alert to deny the striker.
The Rangers goal led a charmed life in the opening minutes of the second half as three times the ball was slid across the home side’s six yard box but Aguero (twice) and Toure could not find the vital finish.
Caulker inadvertently almost put QPR back into the lead on 63 minutes when Vargas’ shot hit him but the ball drifted narrowly wide of the City goal.
City introduced Edin Dzeko for Fernandinho on 65 minutes in a bid to offer support to Aguero but the Bosnian international limped off moments later to be replaced by Frank Lampard.
And it was Rangers who re-took the lead on 75 minutes when Austin’s cross was turned into his own net by Demichelis, under pressure from Zamora.
City were almost back level straight away when substitute Joey Barton’s awful header back towards Green was latched onto by Aguero, who rounded the Rangers keeper but Richard Dunne got back to clear off the line.
Another goalline clearance by Caulker and then the legs of Green denied City once more with ten minutes remaining as the champions sought another equaliser.
But that man Aguero did level things up with seven minutes left when he picked up Toure’s chip to wrong foot Dunne and beat Green.
Both sides went all out for the winner in the closing moments with Austin heading narrowly wide and Green racing off his line to deny Aguero a hat-trick but it was the home team who were left to feel they had deserved more than a point when Dean blew for full-time.