Dimitar Berbatov returned to haunt his old club as he grabbed Fulham's winner to dent Tottenham's hopes of a top-four league finish.
Gareth Bale had an early Spurs header cleared off the line by defender Sascha Riether but the home side looked jaded.
Berbatov struck when he slotted in a low Riether cross before team-mate Brede Hangeland headed just wide.
Fatigue not a problem - Villas-Boas
Spurs' Jermain Defoe had a close-range shot brilliantly saved by Mark Schwarzer late on as Fulham held on.
Berbatov did not celebrate his winner against his former employers, although Tottenham's rivals for a top four spot, Arsenal and Everton, who both won on Saturday and have a game in hand, will be overjoyed.
Spurs now lead north London neighbours Arsenal by just four points and are six ahead of the Toffees in the chase for a Champions League spot for next season..
The victory was Fulham's first in 10 games at White Hart Lane since 2003 and will raise fears among Spurs fans over the kind of collapse they suffered towards the end of last season, which ultimately cost them a Champions League place.
Martin FisherMatch of the Day commentator
"Fulham deserved the three points but are Tottenham throwing away a Champions League spot for a second season in succession? Mark Schwarzer's save from Jermain Defoe near the end was key as Dimitar Berbatov got the winner against his former club."
The home side, who dropped a place to fourth after Chelsea's win, were not helped by an exhausting Europa League tie, which went to extra-time, at Inter Milan on Thursday night on the back of last Sunday's defeat at Liverpool.
Nevertheless, against a Fulham side which had not played since 2 March, the White Hart Lane outfit struggled to get going.
Bale was back in the Spurs side after being suspended for the trip to Italy and was part of five changes made by manager Andre Villas-Boas.
The Wales international, who was signed by Spurs in 2007 by now-Cottagers boss Martin Jol, quickly went close when his steered header from corner was cleared off the line by Riether.
However, a rusty Fulham's lack of action for two weeks and a tired Tottenham's heavy schedule made for a low-key game as both sides lacked rhythm and sharpness.
Berbatov did put in a dangerous low cross just before half-time, which keeper Hugo Lloris parried and hooked clear before the lurking Bryan Ruiz could pounce.
Tottenham's defeat by Fulham resulted in their first defeat at home since 3 November.
Fulham manager Martin Jol left Tottenham in 2007 and won for the first time in four league games against his former club.
Villas-Boas brought on ex-Fulham forward Clint Dempsey for injured centre-back Michael Dawson at the break, although his side were dealt a blow after 52 minutes.
Bale had a long-range shot saved by keeper Schwarzer and Fulham went straight up the other end and scored, with Berbatov turning in a low cross from overlapping right-back Riether.
Minutes later, Fulham almost added a second but centre-back Hangeland nodded inches wide after Ruiz flicked on a Giorgos Karagounis corner.
Villa-Boas threw on striker Defoe in a bid to salvage something from the game and the move would have paid off had it not been for Schwarzer's heroics.
Jol revels in 'amazing' Fulham win
Firstly, the Australian keeper saved Defoe's first-time shot from a right-wing Steve Caulker cross.
Schwarzer then pulled off a fantastic reaction save at point-blank range after the England international tried to sidefoot in a Bale cross at the near post. And Fulham saw the game out to inflict a first home defeat on Spurs since 3 November.
Fulham manager Martin Jol:
"To get a win here against my old club is fantastic.
"In the first half we restricted them. We knew they could have been a bit tired.
"We could have scored a second goal but we didn't and they could have got a point out of it at the end. Mark Schwarzer made an incredible save and, at the end, it was nerve-racking."
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.