Substitute Brian McBride grabbed a debut winner as Fulham came from behind at Loftus Road.
Robbie Keane, who also saw a fine shot knocked onto the post by Edwin van der Sar, put Spurs ahead from the spot after a handball by Ian Pearce.
But Fulham were level by half-time when Michael Brown tripped Luis Boa Morte and Steed Malbranque calmly converted the second spot-kick of the afternoon.
And McBride won it with a close-range tap in after Pearce's header was saved.
Fulham gave a debut to Pearce at centre-half with striker McBride on the bench.
Christian Ziege came in for his first Tottenham start since October and Stephane Dalmat returned to the starting line-up as Spurs looked to avenge the embarrassing 3-0 home defeat in late August.
Both sides struggled to come to terms with the blustery conditions early on although Simon Davies did have an early effort comfortably saved by Van der Sar.
16 mins: Keane's fierce shot tipped onto post by Van Der Sar
18 mins: Keane puts Spurs ahead from spot after a handball by Pearce
45 mins: Malbranque levels from spot after Boa Morte was tripped by Brown
67 mins: McBride nets from a yard after Pearce's header was saved to put Fulham ahead
But it was Spurs who settled first and the lively Keane saw his fierce left foot shot superbly tipped onto the post by Van der Sar on 16 minutes.
And the visitors took the lead moments later when Pearce used his hands in the box and Keane buried the resulting penalty low into the corner.
Fulham were almost level within two minutes as Malbranque teed up Barry Hayles, but his shot from the edge of the area was brilliantly saved by Kasey Keller.
The home side continued to press and deservedly drew level just before half-time with the second spot-kick of the afternoon.
Boa Morte was tripped by Brown right on the edge of the box and Malbranque kept his nerve to fire the penalty into the top right-hand corner of the net.
Helder Postiga had two good chances to put Spurs ahead soon after half time, but miskicked wildly from close range to squander the first and was then denied by Van der Sar.
But Fulham were on top and substitute McBride - who had only been on the pitch for nine minutes - bundled them ahead from a yard after Pearce's header was kept out by Keller.
Fulham: Van der Sar, Volz, Pearce, Knight, Bocanegra, Djetou,
Malbranque, Sean Davis, Clark, Boa Morte (Petta 89),
Hayles (McBride 59).
Subs Not Used: Crossley, Inamoto, Sava.
Tottenham: Keller, Carr, Gardner, Doherty, Ziege, Davies,
Brown, King, Dalmat, Keane, Postiga (Zamora 79).
Subs Not Used: Burch, Bunjevcevic, Jackson, Kelly.
Referee: M Messias (N Yorkshire).