Luke Freeman was sent off as QPR were beaten at Deepdale.
Aiden McGeady equalised just before half-time after Kazenga LuaLua’s first goal for Rangers had put them ahead.
Jordan Hugill headed home the winner before Freeman was dismissed for a second yellow card following a fracas after he had fouled Tommy Spurr.
The result is a blow for Rangers following back-to-back wins and came after they made a great start.
They created a number of openings before the on-loan LuaLua, playing in place of the injured Conor Washington, scored with a sublime back-heel after Darnell Furlong’s throw-in had been flicked on by Matt Smith.
Earlier, LuaLua and Pawel Wszolek saw shots saved by keeper Chris Maxwell and Smith had a decent shout for a penalty waved away after being wrestled to the ground by Paul Huntington.
Shortly before LuaLua’s 36th-minute goal, Alex Smithies produced a fine save to keep out Hugill’s header from Daryl Horgan’s corner.
But Smithies was unable to rescue Rangers a minute before the break, when McGeady found the net with a superb curling shot from near the edge of the penalty area.
And when Hugill was given a free header from another Horgan corner with 18 minutes remaining, this time it resulted in a goal.
Rangers were reduced to 10 men five minutes later and substitute Yeni Ngbakoto missed a great chance to equalise by blasting over after a defensive mix-up.
Smithies produced two fantastic saves late on to deny Preston a third goal.
The R’s keeper denied Hugill after Joel Lynch had headed against his own bar, and then Smithies pushed away a strike from Tom Barkhuizen.
This post was last modified on 25/02/2017