Defoe scored his sixth goal of the season as Tottenham came from behind to register their first home win under Andre Villas-Boas.
A dreadful first-half performance meant Villas-Boas left the pitch at half-time to a chorus of loud boos, but his team turned things around after the break, with Defoe's strike and an own-goal from Alejandro Faurlin handing the Portuguese his first win at White Hart Lane at the fourth attempt.
Bobby Zamora, who scored one goal in 18 appearances at Spurs, put QPR ahead in the first half after Faurlin's brilliant slide-rule pass, and had it not been for a couple of brilliant reaction saves from Brad Friedel, Tottenham could have gone in 3-0 down at half-time.
The home team regrouped after the break and put in a much better performance with Gareth Bale, who had started at full-back, pushed up to his natural position on the left wing.
Faurlin somehow chested the ball into his own net at the back post from a Steven Caulker header and, less than two minutes later, Defoe scored the winner after coolly finishing from 10 yards.
Spurs had conceded in the latter stages of all their previous games, but they held firm this time to leave Villas-Boas punching the air with glee at the final whistle.
The slippery surface made it hard for Spurs to pass the ball around in the early stages, but they fashioned a chance in the third minute when Aaron Lennon found Defoe at the near post but his shot was blocked.
Gylfi Sigurdsson then went down under a pile of QPR players and appealed for a penalty but referee Phil Dowd waved play on.
QPR quickly settled into their rhythm and started pushing for an opener from the off.
Friedel, recalled to the starting XI ahead of Hugo Lloris, pulled off a brilliant save to deny Clint Hill after four minutes.
Nine minutes later the American again produced a world-class save from Junior Hoilett from 10 yards after some poor defending from Kyle Walker.
QPR's fourth corner of the game allowed Ryan Nelsen to sneak in front of his marker, but he headed wide.
Spurs failed to test Julio Cesar once during the first half and they started resorting to long shots that failed miserably.
The one time they had the ball in the net, Clint Dempsey's effort was ruled out after Defoe was given offside in the build-up.
It only seemed a matter of time before QPR broke the deadlock and the opening goal came just after the half hour when Faurlin carved open the Spurs defence to find Zamora, who slotted the ball past the advancing Friedel.
Friedel was at full stretch moments later to deny Hoilett as Rangers pushed for a second.
Mark Hughes thought his team should have had a penalty after 38 minutes when Zamora went down under a challenge from William Gallas but Dowd waved play on.
After being booed off at half-time Villas-Boas brought on Caulker for Sigurdsson, which allowed Bale to move up to his natural position.
Hoilett somehow bustled Caulker's giant frame off the ball and fired at goal but Gallas put in a crucial block.
The 20-year-old proved his worth at the other end by putting in a powerful header from a Bale corner that was cleared off the line.
The game then changed completely with two Spurs goals in 95 seconds.
First Caulker's header from the back post flew in off the chest of QPR midfielder Faurlin and Defoe then made it 2-1 with a cool finish.
Vertonghen charged at the Rangers defence and laid the ball off to Bale, whose shot ricocheted into the path of the England striker, who calmly slotted the ball home through a sea of QPR defenders.
Tottenham's confidence grew by the minute. Dempsey fired a 20-yard shot just wide of Julio Cesar's goal and Bale's powerful cross somehow missed a tap-in.
Hoilett then wriggled free from his marker on a rare QPR attack but Vertonghen came to the rescue with a heroic sliding tackle to dispossess the former Blackburn man.
The match was turning into a thrilling end to end encounter. QPR, mindful that Spurs had conceded in the last 10 minutes of all their league games, threatened through Hoilett and substitute Djibril Cisse.
Spurs still poured forward looking for a third, however, and they almost got it when Dempsey and Defoe had close-range headers blocked.
Defoe raced through with five minutes left but he was forced wide by Park Ji-Sung.
QPR poured forward in injury time looking for an unlikely equaliser but the nearest they came was a curled shot from Faurlin that went a yard wide.
Defoe almost added his second when he raced through in the last minute of added time but Julio Cesar saved well to his right.