Stoke crashed to their fourth consecutive league defeat as newly promoted QPR battled to a 3-2 win at the Britannia Stadium.
Two goals from Icelandic international veteran Heidar Helguson and a Luke Young strike handed victory to Neil Warnock's side, who moved up two places in the table to ninth after the win.
Stoke started strongly, and had vigorous appeals for a penalty waved away after only seven minutes when Jermaine Pennant was felled in the area after a Joey Barton tackle.
Yet City did not have to wait long before they took the lead, with Peter Crouch playing in Republic of Ireland international Walters who drilled a low shot past Paddy Kenny for 1-0.
Alejandro Faurlin should have done better with a half chance for Rangers soon afterwards but his weak shot failed to trouble Danish international Thomas Sorensen.
Crouch then squandered a golden chance to double Stoke's lead when he pounced on a mix-up between Anton Ferdinand and Kenny only to see his first shot blocked before Clint Hill cleared his follow-up.
With Rangers under the cosh, it seemed only a matter of time before Stoke added to their tally.
But against the run of play the visitors produced an equaliser when Helguson struck his first on 22 minutes, the veteran heading home Armand Traore's cross.
Stoke continued to press, however, and Robert Huth should have done better with an inviting Pennant cross only to head over before Matthew Etherington shot wide following a run into the box.
But after soaking up the Stoke onslaught, Rangers found yet another sucker punch in the 44th minute, when good approach play by Shaun Wright-Phillips and Jamie Mackie created an opening for Luke Young who swept home to make it 2-1.
Helguson then added his second of the match to make it 3-1 early in the second half, prodding home Barton's cross to punish poor defending from Stoke on 54 minutes.
Ryan Shawcross set up a tense finale when he pulled a goal back for Stoke 10 minutes later, and Stoke had strong appeals for a penalty turned down when Barton brought down Huth late on before Rangers held on.