Harry Kane scored his seventh goal in seven games for Tottenham to send Aston Villa to a sixth straight defeat.
Andreas Weimann had given Villa a deserved half-time lead with their first goal since 13 September.
But after Villa's Christian Benteke was sent off for pushing Tottenham's Ryan Mason in the face, Nacer Chadli swept in Erik Lamela's corner to equalise.
And substitute Kane, prolific in cups this season, came on to score with a last-minute deflected free-kick.
The England Under-21 international stepped up his claims for a first Premier League start of the season after following up a hat-trick in the 5-1 Europa League win over Asteras Tripolis with another goal in Wednesday's 2-0 League Cup win over Brighton.
He began on the bench at Villa Park, but looked a significant threat after replacing Emmanuel Adebayor with little more than half an hour to go.
Defeat increases the problems for Villa manager Paul Lambert, who had acknowledged before the match that he was not "bomb-proof" despite only signing a contract extension in September.
Roberto Soldado had two early chances to give Spurs the lead, fizzing a 20-yard shot just wide in the first minute and then heading past the post after a scramble in the penalty area.