The London side arrived in the Midlands having lost 13 of their 14 Premier League away games this season but raced into a 3-0 half-time lead thanks to goals from Eduardo Vargas, Charlie Austin and Zamora.
Albion threatened a revival after the break and lively substitute Victor Anichebe pulled a goal back with just over half-an-hour remaining.
But the hosts had Youssouf Mulumbu sent off just 11 minutes after he had come off the bench and an injury-time Joey Barton goal wrapped it up for QPR, who go 18th in the table – just a point from safety.
There was little sign of the first-half fireworks to come in a fairly quiet opening 10 minutes but Brown Ideye then squandered a great chance to put the hosts into the lead, heading over the bar when he was left all alone at the back post to meet a Darren Fletcher cross.
He was made to pay moments later when Vargas scored a cracking 15th-minute opener, latching onto an Austin flick-on ahead of Chris Baird, and then finding the corner of the net with a low right-footed shot from 25 yards out which flew past Boaz Myhill.
Albion almost equalised just a few minutes later, a low Baird cross hitting Ideye and then bouncing inches wide of the post.
Vargas then had to go off with a leg injury but his replacement, Niko Kranjcar, played a key role as the visitors doubled their lead eight minutes before half-time.
Matt Phillips sent over a right-wing corner and Kranjcar got up well to flick the ball on at the near post, top scorer Austin applying the finishing touch with a diving header at the back post.
Already reeling from the shock of seeing their side go two goals clear away from home, the QPR fans were celebrating again two minutes before half-time when Zamora conjured up a superlative goal out of nowhere.
Phillips played the ball down the right-hand side and, from the corner of the area, Zamora produced an audacious first-time flick with the outside of his left-foot, which looped over Myhill and dropped perfectly under the crossbar.
Some strong words may have been said in the West Brom dressing room at the break and they began the second-half with plenty of purpose, boosted by the introduction of Anichebe, who teed up Craig Gardner, only for the midfielder to side-foot his shot straight at Rob Green.
Anichebe then pulled a goal back himself in the 58th-minute, beating Green with a fine header after Saido Berahino floated over a nice cross from the left.
QPR were rocking and Green did well to save a deflected Ideye shot, before Berahino wasted a great chance to make it really interesting, nodding straight at the QPR goalkeeper from close range after an Ideye knock down.
Ideye then put a diving header over the bar from a brilliant Chris Brunt cross but the hosts lost all their momentum when Mulumbu was red carded six minutes from time.
The midfielder appeared to catch Barton with his arm as they challenged for a header and, although it seemed clumsy rather than malicious, referee Lee Probert had no hesitation in showing a straight red.
Probert had turned down a pair of plausible QPR penalty appeals for handball in the second half but his final key intervention meant they were able to cruise through the closing stages.
And they wrapped up a second away win of the season in the fifth minute of stoppage time, when Austin made a nuisance of himself in the box, West Brom failed to clear, and Barton raced in to latch on to the loose ball, which he gleefully smashed past Myhill.
Having looked in massive trouble, QPR will now head into a huge game at Aston Villa on Tuesday night in good heart, while West Brom remain on 33 points, and will feel they need one more win to assure themselves of Premier League football next season.
Matt Le Tissier’s verdict:
“As soon as the first goal went in, West Brom looked a little bit vulnerable. Vargas scored the goal, with a brilliant strike from outside the box, and the confidence that gave QPR was visible. The third goal was an absolutely superb goal – Bobby Zamora probably has not scored many better goals than that in his entire career.
“West Brom got a goal back but QPR looked fairly comfortable after Mulumbu was sent off.”
West Brom: Myhill (6), Baird (6), McAuley (6), Lescott (5), Brunt (7), Sessegnon (5), Fletcher (5), Gardner (5), Morrison (6), Ideye (7), Berahino (5).
Subs: Olsson (5), Anichebe (8), Mulumbu (4).
QPR: Green (7), Isla (7), Onuoha (7), Caulker (7), Yun (6), Phillips (7), Barton (7), Sandro (6), Vargas (7), Austin (7), Zamora (8).
Subs: Hill (7), Kranjcar (7), Henry (6).
Player of the match: Bobby Zamora.