Mousa Dembele fired us into an early lead and Dele Alli put us well in control when he added a second just before the interval.
Although we were comfortable for most of the second half, Villa hit back through Jordan Ayew with 11 minutes left which made for some nervy moments late on, but the game was wrapped up when Harry Kane smashed home deep into injury time to complete a 3-1 win.
We made it 10 Premier League games without defeat with the victory, which saw us climb up to fifth in the table and just five points off top spot.
Head Coach Mauricio Pochettino named the same side which demolished Bournemouth 5-1 last time out, Jan Vertonghen making his 100th Premier League appearance in our colours, and we wasted no time carrying on from where we left off on the south coast.
The game hadn’t even settled down before we were ahead, scoring the third fastest goal of this Premier League season. Only three minutes were on the clock when Danny Rose clipped a ball down the line to Dembele, who shrugged aside the attentions of Ciaran Clark as he turned and advanced into the area and from a tight angle, he fired a shot through Brad Guzan’s legs and into the net.
It was a dream start but Villa put their early setback behind them and carved out an opportunity on 11 minutes. Scott Sinclair attacked down the left, weaved between Kyle Walker and Alli, cut inside Toby Alderweireld and drilled a shot which Hugo Lloris parried away. Jack Grealish collected the rebound but could only shoot wide.
Although we were fairly dominant in possession, there wasn’t a great deal of goalmouth action to shout about, and it wasn’t until the 25th minute that we troubled Villa’s goal again. Eric Dier fizzed a pass in behind the Villa defence for Kane, bursting clear down the left channel. He came inside one challenge and hit a shot which deflected up off former Spur Alan Hutton and needed Guzan to tip over the bar. From the corner, Christian Eriksen laid a pass in to Rose on the edge of the area and his drive just shaved the top of the crossbar.
A couple of minutes later Dembele fired over from distance before Villa were forced into a change, Ayew replacing Ashley Westwood.
The half ended with us on top, Kane seeing a header blocked from Eriksen’s free-kick before we doubled our advantage in first half stoppage time.
Eriksen won possession back midway inside Villa’s half and threaded a pass down the line to Rose, he delivered a cross which was headed clear only as far as Alli on the edge of the area, who took a touch and hit a low drive which nestled in the bottom corner of the net.
The visitors made another change at the interval, with Rudy Gestede replacing Gabby Agbonlahor, but once again we were on the offensive first, Dier playing a one-two with Erik Lamela but seeing his shot blocked by Joleon Lescott, while Lamela then drifted over a deep cross for Rose at the far post but he headed over.
Sinclair and Hutton had shots blocked in quick succession by Walker and Rose respectively as Villa looked for a route back into the contest, while at the other end Kane was twice denied a passage to goal as he looked to add to last weekend’s hat-trick against Bournemouth.
Our first substitution saw Ryan Mason come on in place of Dembele with just over 20 minutes to go and we had another sight of goal moments later, Eriksen lining up a free-kick 25-yards out just left of centre but his effort was wide of Guzan’s post.
We were almost caught out on 74 minutes when Dier was robbed of possession 25 yards from goal by Carles Gil, he found Gestede who hit a shot which Vertonghen did well to slide in and deflect behind for a corner. And just a minute later it was Dier this time who blocked the Villa striker’s effort from Hutton’s centre.
The visitors were certainly applying some late pressure and almost pulled a goal back when Leandro Bacuna’s 22-yard curler beat Lloris but cannoned off the post to safety. But just seconds later, Ayew took aim from a similar distance and this time the ball flicked off Vertonghen, wrong-footed Lloris and ended up in the back of the net.
Suddenly Villa were back in the game and Gestede almost headed them level when he beat Lloris to a cross but his effort was wide, and Ayew tried his luck again but fired over with seven minutes remaining.
Josh Onomah came on for his Premier League debut with a matter of minutes remaining, replacing Alli, and we enjoyed a spell of late possession to try to take the sting out of the game. The young midfielder even had a sight of goal, firing a low drive which was comfortable for Guzan.
But the Villa keeper could do nothing about Kane’s strike three minutes into stoppage time. It was a delightful move as substitute Ben Davies broke forward and found Eriksen, who in turn laid off to Lamela out wide. Rather than shooting, he squared for an unmarked Kane to curl superbly into the top corner from 15 yards to settle the nerves and secure the victory.
Spurs (4-2-3-1): Lloris, Walker, Alderweireld, Vertonghen, Rose (Davies 82), Dier, Alli (Onomah 89), Lamela, Eriksen, Dembele (Mason 69), Kane. Substitutes (not used): Vorm, Trippier, Fazio, Townsend.
Villa (4-4-2): Guzan, Hutton, Clark, Lescott, Richardson, Bacuna, Westwood (Ayew 38), Sanchez, Sinclair, Agbonlahor (Gestede 46), Grealish (Gil 65). Substitutes (not used): Bunn, Veretout, Amavi, Crespo.
Goals: Spurs – Dembele 3, Alli 45+1, Kane 90+3; Villa – Ayew 79.
Yellow cards: Villa – Ayew, Hutton.
Referee: Mike Dean.