Brighton 2 QPR 0
QPR’s promotion bid suffered another setback as they slumped to a fourth defeat in six matches.
Leonardo Ulloa put Brighton ahead against the run of play on 77 minutes and Stephen Ward netted their second eight minutes later.
The result means Rangers still trail second-placed Burnley by nine points, having now played the same number of games as the Clarets.
Ravel Morrison produced their best moment when his fierce 30-yard shot was pushed over by Albion keeper Tomasz Kuszczak.
Jermaine Jenas fired wide and Armand Traore had an effort saved by Kuszczak as the visitors continued to press in the first half.
It took Brighton until midway through the second half to register a shot on target and that was a tame attempt from long-range by Jake Forster-Caskey that was easily gathered by keeper Rob Green.
On-loan Manchester United youngster Will Keane, playing in the absence of the injured Kevin Doyle, found the going tough up front as QPR struggled to create clear-cut chances.
But they dominated possession and Traore had a second-half shot saved before Junior Hoilett twice fired wide.
Then Rangers were hit with a sucker punch.
Bruno got away from Benoit Assou-Ekotto after exchanging passes with Keith Andrews on the right, and Ulloa sneaked behind Richard Dunne to tap in the full-back’s low cross.
Substitute Modibo Maiga was unable to apply the finishing touch at the far post following good work by Morrison and Keane had a volley saved as Harry Redknapp’s men searched in vain for an equaliser.
Their fate was sealed when Ward got in front of Jermaine Jenas to nudge home Kazenga LuaLua’s left-wing corner.
QPR (4-1-4-1): Green; Onuoha, Dunne, Hill, Assou-Ekotto (Maiga 78); Barton; Traore, Jenas, Morrison; Hoilett; Keane.
Subs not used: Murphy, Hughes, Kranjcar, Henry, Benayoun, O’Neil.