Todd Kane’s late goal gave in-form QPR a fourth consecutive win.
Bournemouth looked like earning a point after Shane Long’s equaliser cancelled out Stefan Johansen’s opener.
But Kane netted with seven minutes remaining to clinch a sixth victory in seven matches – for Mark Warburton’s side.
They went ahead after a mistake by Chris Mepham – a boyhood QPR fan – on 58 minutes.
Johansen pounced on Mepham’s loose pass across the face of the penalty area and slotted past keeper Asmir Begovic for the Norwegian’s first goal since joining Rangers on loan from neighbours Fulham.
Long brought Bournemouth level 11 minutes later with his first goal since arriving on loan from Southampton – a close-range finish after Cook’s cross from the left had been headed across goal by Sam Surridge.
But QPR regained the lead when substitute Albert Adomah’s left-wing cross was fired home by Kane at the far post.
Another Rangers substitute, Macauley Bonne, missed a great chance to make it 3-1 but hit the post after keeper Asmir Begovic had failed to gather Kane’s cross.
Bournemouth were much the better side in the first half and Long shot straight at keeper Seny Dieng after being out through on goal by Jefferson Lerma’s ball over the top.
Dieng also did well to divert away a shot from Philip Billing after the Dane had been found by Jack Wilshere on the left-hand side of the penalty area.
And moments before the interval, Adam Smith went close to giving the Cherries the lead when he fired narrowly wide.
Rangers finally threatened after the restart and almost went ahead when Ilias Chair’s right-wing free-kick was headed against the bar by Yoann Barbet.
Bournemouth were straight back on the attack and Smith missed a golden chance to score when he contrived to nudge the ball wide from close range after being teed up by Lloyd Kelly’s low ball across from the face of goal.
It proved to be a costly miss for Bournemouth as Mepham’s error then gifted Rangers the lead. Had Smith scored the result might have been very different.
QPR: Dieng, Dickie, Cameron, Barbet, Kane, Ball, Johansen (Willock 59), Chair (Adomah 72), Wallace (Hamalainen 59), Dykes (Bonne 72), Austin (Field 59).
Subs not used: Lumley, Kakay, Bettache, Kelman.