West Brom won in London for the first time in 11 games to condemn QPR to the bottom of the Premier League table.
Chris Brunt's low 30-yard strike opened the scoring at a rain-soaked Loftus Road as Albion jumped back up to fifth.
QPR keeper Robert Green palmed the ball into his own net to put Albion 2-0 up after Armand Traore's headed clearance dropped under his own bar.
Djibril Cisse dinked the ball over Ben Foster to give QPR hope but the Albion keeper saved Clint Hill's late header.
It was a terrific effort by the England keeper, aided by his midfielder Youssouf Mulumbu on the line, as QPR piled on the pressure in the closing minutes in an attempt to rescue a point from the game.
Gareth McAuley, Jonas Olsson and Liam Ridgewell all put in timely blocks to repel wave after wave of attacks in injury time as Albion held on.
The defeat was QPR's 11th of the season and returned them to the bottom of the table on goal difference after Reading picked up a point against Swansea at the Madejski Stadium.
The last time QPR and Albion met on Boxing Day was in the 1968-9 season. West Brom won 4-0 at Loftus Road on that day and Rangers went on to be relegated from the top flight.
And it looked likely that Albion would repeat that scoreline on Wednesday after they opened up a 2-0 lead early in the second half.
Brunt ran on to Marc Antoine-Fortune's simple pass and without breaking stride, drove a low shot beyond Green's left hand to put Albion ahead.
James Morrison almost doubled the lead before half-time with a sharp flick, turn and volley but his 22-yard effort dipped over the bar.
The second goal did come though, albeit in controversial fashion.
Traore, in attempting to head Brunt's corner clear, succeeded only in sending the ball high into the air and towards his own goal-line.
Home keeper Green, who claimed he was being impeded by Marc-Antoine Fortune, could only palm the ball into his own net and referee Chris Foy waved away QPR protests.
Green was at his best though to twice deny Romelu Lukaku in one-on-one situations, advancing quickly to snuff out the danger on both occasions.
However, Rangers were struggling in attack and their lack of quality in front of goal was summed up by Stephane Mbia, who headed an Adel Taarabt corner straight back to the midfielder instead of towards goal.
The visitors were well in command but a defensive lapse allowed QPR a foothold in the game - Mbia threading a beautifully weighted through ball to Cisse, who lifted his shot over the advancing Foster to make it 2-1.
And from that moment, the home side looked the more likely to score. Albion defenders McAuley and Olsson both blocked shots while QPR's appeals for a penalty were waved away after Mbia's header struck Ridgewell on the elbow.
From the corner, Hill rose highest but his downward header was brilliantly saved by Foster as Albion held on for the win.