Jarrod Bowen and Markus Henriksen scored to give the Tigers an early 2-0 lead, but QPR were soon back in it through Pawel Wszolek. Bowen scored again to make it 3-1 midway through the second half and the visitors held on after Luke Freeman set up a tense finish in added time.
Nigel Adkins made two changes to the side that started against Norwich City in midweek as Daniel Batty and Fraizer Campbell came back into the eleven. Kevin Stewart and Chris Martin dropped to the bench while Henriksen, Eric Lichaj and Reece Burke were all passed fit to play despite being injury concerns a couple of days earlier.
The Tigers made a bright start and made it count by taking a sixth minute lead with a goal of real quality. Henriksen’s clever ball forward found Campbell who in turn fed Bowen to his right. Bowen cut inside onto his left foot and then fired a low shot past goalkeeper Joe Lumley at his near post to make it 1-0.
QPR briefly threatened a leveller before the visitors doubled their lead 22 minutes in. More good work from Bowen earned a corner and when he swung it into the box himself, Henriksen was there with a cute flick from close range.
The two-goal cushion lasted just a minute, though, as QPR hit back. A neat pass slid Wszolek into the box and he produced a calm finish as he slotted the ball underneath David Marshall.
Rangers were almost level from their next attack but Nahki Wells saw a shot deflect just wide as the Tigers were forced to weather some pressure, before they went close to adding a third through a Kamil Grosicki free kick and a Jackson Irvine header – both of which went over the bar.
Campbell’s close-range effort was kept out by a superb defensive block before Marshall made an excellent save to keep out Wells’ low strike at the other end.
Angel Rangel crashed a long-range effort against Marshall’s left-hand upright an action-packed first half continued, with the Scottish goalkeeper then making another fine stop to keep out Joel Lynch’s header as the home side forced a succession of corners.
The visitors wasted a couple of set-pieces of their own late in the half, but took their lead into the interval.
There was a double change in defence for the Tigers at half time as Burke and Lichaj were replaced by Jordy de Wijs and Robbie McKenzie.
Henriksen blasted a decent chance over the bar early in the second half and Freeman did the same for the home side before Grosicki saw a low shot saved by Lumley.
The game then entered a scrappy period before the Tigers extended their lead in the 69th minute. Bowen did well to win the ball in the middle of the field and exchanged passes with Grosicki, which resulted in Bowen being through on goal. His first effort was saved by Lumley, but Bowen was quickest to the rebound to bag his second of the afternoon.
A third change soon followed the third goal as Ondrej Mazuch replaced Grosicki as Adkins switched to three at the back, with McKenzie and Todd Kane playing as wing-backs.
Matt Smith wasted a good opportunity to bring QPR back into it when he lifted a shot over the bar after finding space inside the box, but they were back in it in the second minute of added time when Freeman bundled home from close range.
There was still time for Freeman to curl a free kick just wide, as the Tigers held on for the three points.
Queens Park Rangers: Joe Lumley, Jake Bidwell, Geoff Cameron (Tomer Hemed 63), Luke Freeman, Ebere Eze, Massimo Luongo, Angel Rangel (Matt Smith 73), Pawel Wszolek (Bright Osayi-Samuel 86), Nahki Wells, Joel Lynch, Toni Leistner.
Subs Not Used: Matt Ingram, Darnell Furlong, Jordan Cousins, Josh Scowen.
Hull City: David Marshall, Todd Kane, Tommy Elphick, Reece Burke (Jordy de Wijs 46), Eric Lichaj (Robbie McKenzie 46), Daniel Batty, Markus Henriksen, Jarrod Bown, Jackson Irvine, Kamil Grosicki (Ondrej Mazuch 73), Fraizer Campbell.
Subs Not Used: George Long, Kevin Stewart, Will Keane, Chris Martin.
Referee: Mr J. Simpson.
Attendance: 13,824 (757 Visiting Supporters).