QPR prevented Stoke from going back to the top of the Championship table with a convincing victory at Loftus Road.
Mikele Leigertwood put the hosts ahead with a stunning 25-yard drive and then struck from 12 yards from Rowan Vine's headed knock-down to double the lead.
Stoke had captain Andy Griffin harshly dismissed following a challenge for the ball with Hogan Ephraim before Akos Buzsaky's low shot made it 3-0.
The Potters hit the woodwork twice and worked hard but without reward.
QPR coach Luigi De Canio:
"We have beaten the top teams this season.
"This shows we need to acquire the mentality when playing teams at the bottom of the table that we show against teams at the top.
"Consistency is important, because our position in the table is defined by our performances week in, week out."
Stoke manager Tony Pulis on Griffin's dismissal:
"I don't think it's a sending off.
"I think Andy has played the ball. He has not put their player in any danger whatsoever. He slid in to get the ball and played it cleanly.
"I hope the referee is big enough to look at it and say he's made a mistake. That is all we are asking for."
QPR: Camp, Mancienne, Connolly, Hall (Stewart 79), Delaney, Buzsaky, Leigertwood, Rowlands (Ainsworth 81), Ephraim, Agyemang, Vine (Blackstock 75).
Subs Not Used: Pickens, Lee.
Goals: Leigertwood 12, 21, Buzsaky 56.
Stoke: Simonsen, Griffin, Cort, Shawcross, Pugh, Lawrence (Buxton 62), Diao (Gallagher 55), Whelan, Cresswell, Sidibe (Wilkinson 46), Fuller.
Subs Not Used: Hoult, Parkin.
Sent Off: Griffin (44).
Ref: Andy D'Urso (Essex).