The 21-year-old England midfielder, making his first appearance in this year’s competition after serving a three-game ban, scored either side of halftime on a memorable night for Mauricio Pochettino’s team.
Christian Eriksen was also on target for Tottenham as they proved far superior to end Madrid’s 30-match unbeaten run in Champions League group play.
Cristiano Ronaldo replied for Zinedine Zidane’s side but it was in vain as Tottenham sealed a first win in six attempts against the Spanish champions who will face more criticism after falling eight points behind Barcelona in La Liga.
Tottenham lead Group H with 10 points with Real on seven, followed by Borussia Dortmund and Apoel Nicosia who have two each after a draw in Germany.
“We are starting to believe in our potential and quality,” Tottenham manager Mauricio Pochettino, whose side failed to negotiate the group phase last year, told reporters.
“This win makes us more visible and is something that everyone around Europe will have noticed.”
Twelve-times champions Real should still qualify but manager Zidane admitted his side were in a rut after the weekend’s defeat at Girona and now a chastening night at Wembley.
“It’s a hard defeat to take but it was against a team who played very well and deserved to win,” he said. “We were not able to come up with a response and we are not happy about it.”
Buoyed by their impressive 1-1 draw in the Bernabeu two weeks ago Tottenham began at a high tempo and dominated the opening 20 minutes against a pensive Madrid.
Harry Kane, declared fit after missing his side’s weekend loss at Manchester United with a hamstring strain, should have done better with an attempted chip over Real keeper Kiko Casilla who was deputising for injured Keylor Navas.
Tottenham right back Kieran Trippier was a constant menace down the right and his first-time volleyed cross caused panic in the Real defence - a portent of things to come for Real.
The hosts suffered a blow when central defender Toby Alderweireld’s evening was cut short as he pulled up with a hamstring injury after a foray forward.
Moussa Sissoko replaced him with Eric Dier dropping into defence but it did not slow Tottenham’s momentum as they deservedly went ahead five minutes later.
Harry Winks picked out Trippier racing down the right and his volleyed cross found Alli to prod home.
Real responded with Casemiro and Ronaldo testing Hugo Lloris but Tottenham should have increased their lead before halftime when Sissoko mis-kicked in front of goal from another Trippier cut back and Kane’s goalbound shot was blocked by Sergio Ramos.
A single-goal lead looked vulnerable against the defending champions but Tottenham doubled it nine minutes after the break with Alli sending the Wembley crowd into raptures.
The England midfielder was allowed to advance goalwards and his shot deflected off Ramos’s back to completely wrong-foot Casilla.
Real, who had lost only one of their last 22 European fixtures, swarmed forward trying to salvage something but their night took a turn for the worse when Tottenham counter-attacked in devastating fashion in the 65th minute, Alli finding Kane who picked out Eriksen to calmly slot home.
Ronaldo fired home his sixth goal in this year’s competition to set up a frantic last 10 minutes but Tottenham held firm to avenge their quarter-final defeat by Real in 2011.