Jarrod Bowen scored twice for the Tigers as Rangers were unable to avoid only their second defeat in 10 Championship matches.
Goals from Bowen and Markus Henriksen had put Hull two up before Pawel Wszolek pulled a goal back for Rangers, who went close to equalising when Angel Rangel volleyed against the post shortly before the interval.
A second-half onslaught looked likely but did not materialise and Bowen netted a vital third, before Luke Freeman netted in stoppage time,
Hull manager Nigel Adkins revealed a pre-match pep talk did the trick for Bowen, who was outstanding throughout.
Bowen, who opened the scoring after just six minutes, had netted just once in his previous nine matches.
“Jarrod hadn’t scored for a few weeks and I said to him before the game to just go and enjoy playing football,” Adkins revealed.
“Sometimes things can start to build up a little bit and you just need to go and enjoy playing football. You can see he had that today and he worked for the team, scored two and could have had a couple more.”
The victory lifted City out of the bottom three and was their second win in their past three away games.
“I’m really pleased for all the staff and players. We’ve come away from home and again played really good football,” Adkins said.
“We’ve got a team that are so committed to the cause. The team ethos is there and they’ve run their socks off. They’ve competed and without any individual the whole team have just worked their socks off again.
“We’ve been playing good football but been caught out by individual mistakes that have cost us games.
“But today we’ve scored three, could have scored a couple more, and the spirit and commitment of the players is there for all to see and has been for a while now,” he added.
QPR: Lumley, Rangel (Smith 73), Leistner, Lynch, Bidwell, Luongo, Cameron (Hemed 63), Wszolek (Samuel 86), Eze, Freeman, Wells. Unused substitutes: Ingram, Furlong, Cousins, Scowen.
Hull City: Marshall, Kane, Elphick, Burke (De Wijs 46), Lichaj (McKenzie 46), Bowen, Henriksen, Batty, Grosicki (Mazuch 74), Irvine, Campbell. Unused substitutes: Stewart, Long, Keane, Martin.
Referee: J Simpson (Lancashire).