Boro, managed by former Spurs defender Jonathan Woodgate, had been in good form heading into the third-round replay, but they shot themselves in the foot after only two minutes when they gifted the home side the lead.
Middlesbrough goalkeeper Tomas Mejias’ poor pass was gathered by Giovani Lo Celso who steadied himself before slotting a low drive into the net.
Boro wasted a good chance to equalise when Djed Spence set up Lukas Nmecha whose shot was kept out by Paulo Gazzaniga and it proved to be a costly miss as Erik Lamela made it 2-0 in the 15th minute when he slotted the ball past Mejias after a fine run.
Spurs were by far the better team in the first 45 minutes and Eric Dier and Ryan Sessegnon went close to extending their lead before half time while, at the other end, Paddy McNair lashed a shot way over the bar from a good position, although he was clearly offside.
Middlesbrough improved after half time but Gazzaniga saved Lewis Wing’s free-kick while Spurs’ Lo Celso had a shot blocked.
Spurs struggled to create many clear-cut openings in the second half as the Teessiders searched for a way back into the game and, after Nmecha had failed to guide his powerful header on target, Boro did halve the deficit with an 83rd-minute goal by substitute George Savile who fired a low shot into the corner of the net.
Jose Mourinho’s side held on to win the tie and set up a fourth-round clash against Southampton but the former Chelsea manager will be annoyed that his team once again failed to keep a clean sheet.