In an opening 45 minutes of few chances, the hosts had an early opportunity when Akos Buzsaky lashed his shot narrowly wide of Michel Vorm's post.
Vorm was called into action soon after, but he made a comfortable save from Jamie Mackie after he had been teed up by strike partner Bobby Zamora.
Joey Barton, who was being booed by some sections of the home support, tried his luck from distance with 30 minutes gone, but the captain's drive flew high over the crossbar.
However, the midfielder did better in first-half injury time as his low shot in a crowded penalty are found the bottom corner.
It was 2-0 in the 55th minute when Mackie's turn and shot deflected in off Angel Rangel. However, replays showed that the R's forward looked to have come from an offside position to collect Anton Ferdinand's initial pass.
The win was secured with 20 minutes to play thanks to Akos Buzsaky's fierce strike from 20 yards.
It could have been 4-0 late on, but Joey Barton's shot was cleared off the line.