David Nugent struck in the 67th minute with a fine finish for his 21st goal of the season and his 19th in the league.
Leicester now need just three more points from the last three games to go into the Premier League as champions. QPR had their chances but will have to wait a little longer to confirm their place in the play-offs.
They had Benoit Assou-Ekotto sent off in the 78th minute for a second yellow card.
With Jamie Vardy picking up a knock in the draw at Reading, Leicester boss Nigel Pearson switched from his preferred 4-4-2 system to a 4-3-3 formation.
Midfielder Andy King replaced Vardy and Anthony Knockaert returned in place of Lloyd Dyer.
QPR had Aaron Hughes back in the side but Joey Barton, Clint Hill, Andrew Johnson and Charlie Austin were still absent.
The Foxes made a bright start with Jeff Schlupp finding Riyad Mahrez with a fine cross but the winger’s shot was deflected for a corner.
Knockaert then blazed high and wide after some excellent build-up play by King and Nugent.
But it was Rangers who came closest to scoring in the 18th minute when Modibo Maiga fired in a shot on the turn that City goalkeeper Kasper Schmeichel tipped around the post at full stretch.
The visitors were coming into the game much more now and a delightful one-two between Niko Kranjcar and Maiga saw Schmeichel again doing well to tip over the latter’s shot in the 22nd minute.
It was Schmeichel to the rescue again in the 33rd minute when, following a scramble after a low free-kick from the right, he blocked a close-range effort from Kranjcar and then kept out a sliced clearance from Wes Morgan.
QPR were looking the better side at this stage but City suddenly found another gear with King twice coming close to giving them the lead.
In the 37th minute, he saw a first-time shot saved by QPR goalkeeper Robert Green and then three minutes later, after being gifted the ball by Karl Henry, went round Green only to have his sidefooted finish cleared off the line by Nedum Onuoha.
But QPR hit back and almost scored right on half-time. Danny Drinkwater gave the ball away and Kranjcar set up Maiga but from a good position he dragged his shot well wide.
It had not been the best 45 minutes in terms of quality and the second half began in similar fashion with neither side able to keep possession for any length of time.
An error by Schlupp gave Maiga another chance but again he was off-target, and on the hour mark Maiga curled another shot wide after being played in by Kranjcar.
But the deadlock was finally broken in the 67th minute with City’s top scorer Nugent producing a superb finish.
Mahrez began the move with a ball to Drinkwater, who then slipped a lovely pass for Nugent to run onto and the striker rounded things off with a blistering shot from a narrow angle.
QPR might have equalised in the 72nd minute but Yun Suk-young lobbed wide with only Schmeichel to beat.
Six minutes later QPR suffered another blow when Assou-Ekotto – booked in the first half – was shown a second yellow card for a foul on King and dismissed.