Tim Krul was the hero for Norwich City, saving two penalties in a dramatic penalty shootout to put Norwich City into a first FA Cup quarter-final in 28 years.
Spurs took an early lead when Jan Vertonghen nodded home a Giovani Lo Celso free-kick and it could have been more at half-time but for two outstanding saves from Tim Krul at either end of the half.
City probed in the second-half and got their reward on 78 minutes when Josip Drmic profited from poor goalkeeping to tap home after Michel Vorm parried Kenny McLean's rasping effort.
Drmic's equaliser sent the game into extra-time and then penalties, with Krul saving twice to see City prevail 3-2 on spot-kicks.
Daniel Farke made four changes to the side which beat Leicester City on Friday night. The back four remained the same but there were plenty of changes in the midfield and attacking ranks with Josip Drmic replacing Teemu Pukki up top. Lukas Rupp and Mario Vrancic came into the midfield in place of Kenny McLean and Ondrej Duda, and Tom Trybull was introduced to anchor the team in the middle in place of Alex Tettey.
Despite plenty of noise inside the stadium, largely being created by the 9,000 strong travelling support, the early exchanges were timid until Spurs broke at pace on 11 minutes. Giovani Lo Celso was found unmarked in the area but his low effort was beaten away well by Tim Krul.
Spurs took the lead moments later via a set-piece. Lo Celso turned provider after Steven Bergwijn was fouled by Emi Buendia on the left-hand side. His menacing delivery was met by Vertonghen who climbed above Jamal Lewis to head home at the back post.
Spurs went on to boss the next 20 minutes or so and their threat from wide areas was causing City issues. The pacey pair of Moura and Bergwijn were proving difficult to handle.
City finally got into their stride on the half hour mark. Rupp was found in the box on 32 minutes by Vrancic but after cutting onto his right he was crowded out and Spurs managed to clear.
Then Buendia weaved his way through the challenges to test Vorm before the Spurs keeper almost spilled into his own net from a long-range Rupp strike. City were rallying and Vrancic had a goalbound strike blocked on 36 minutes before the following corner was nodded over by Trybull.
Spurs were then presented with a terrific opportunity to double their lead on the stroke of half-time. Trybull played a pass to Vrancic in his own penalty area who was closed down by Moura but Krul was on hand to block Moura’s strike from close proximity.
The two sides traded blows at the start of the second 45. First, Vrancic clipped the ball to Drmic who chested down for Buendia but his strike was deflected over from a narrow angle.
Then substitute Gedson Fernandes shot straight at Krul before Rupp chested, volleyed and tested Vorm low to his right.
Farke made changes just after the hour mark with Kenny McLean and Adam Idah introduced in the hope of them giving City fresh impetus. The former was straight into the action, spreading a crossfield ball from left to right, with Aarons there to cut back to Drmic but his shot was dragged wide.
McLean was involved once again in City's equaliser. His thumping drive was parried by Vorm on 78 minutes but Drmic was on hand to scramble the ball home to send the away fans into raptures.
However, the goal kicked Spurs into action once more and City were having to dig deep to stay in the game. It was only level because of a sensational Godfrey block on 86 minutes after Lo Celso's strike seemed destined for the back of the net.
Spurs were almost in again on 89 minutes when a searching pass almost found the onrushing Dele Alli but Krul once again was on hand to race clear and beat the ball away from danger.
The game went into extra-time and both teams were out on their feet, although City went close just after the break when Adam Idah nodded Jamal Lewis's cross over.
The game headed to extra-time and it was City who held their nerve. Eric Dier scored the first for Spurs but it was all downhill from there with Erik Lamela, Troy Parrott and Fernandes all being thwarted. For City, Idah, Stiepermann and Cantwell struck the blows to send the Canaries through.
Spurs: Vorm, Aurier, Dier, Sanchez, Vertonghen (C), Winks (Ndombele, 81), Skipp, Lo Celso, Dele (Parrott, 97), Bergwijn (Fernandes, 54), Lucas (Lamela, 69)
Subs not used: Gazzaniga, Alderweireld, Tanganga
Goals: Vertonghen (13)
Bookings: Skipp (71)
Norwich: Krul, Aarons, Godfrey, Hanley (C), Lewis, Trybull (Tettey, 88), Buendia (Stiepermann, 97), Vrancic (McLean, 67), Rupp (Idah, 71), Cantwell, Drmic
Subs not used: McGovern, Pukki, Duda
Goals: Drmic (79)
Bookings: Vrancic (8), Hanley (81)
Lo Celso (scored)
Parrott (saved by Krul)
Fernandes (saved by Krul)
McLean (saved by Vorm)
Venue: Tottenham Hotspur Stadium
Kick-off time: 7.45pm
Referee: Paul Tierney