Leading through Andreas Weimann's first half goal, Villa were dealt a blow when Christian Benteke was shown a straight red card in the second period - with Chadli grabbing his fifth goal in nine Premier League games to restore parity on 84 minutes before Kane registered his first top flight goal of the season and his ninth in all competitions to complete the comeback.
Mauricio Pochettino made two changes to the team that started against Newcastle last week. Roberto Soldado came in for Erik Lamela as we played with two up front while Kyle Naughton replaced Eric Dier at right back.
Soldado fizzed a shot just wide inside the first minute of an open first half.
Villa responded with Benteke's diving header going just wide before our first serious chance on 12 minutes, Soldado heading wide from close range after Christian Eriksen's volley looped in his direction off Chadli.
A minute later the home team struck the woodwork as Aly Cissokho's cut-back found Benteke, whose drive from 16 yards hit the corner of the upright and crossbar.
Villa opened the scoring on 16 minutes. Charles N'Zogbia managed to get away from Danny Rose on Villa's right, charged into the box and crossed low for Weimann to steer into the corner from 10 yards.
We always looked capable of a response though and the next chance fell to Younes Kaboul, who met Chadli's dinked cross under pressure from Nathan Baker. The ball dropped to his feet but he couldn't get enough on his poke at goal to beat Brad Guzan.
The US goalkeeper did even better on 27 minutes when Eriksen's pass sent Emmanuel Adebayor clear. The striker looked to place his shot into the corner but Guzan got his angles right and tipped wide.
Cissokho provided the final two chances of the first half - Matt Lowton's volley deflected just wide on 32 minutes before Benteke rose well to head inches past the post.
Erik Lamela was introduced at the start of the second half for Eriksen, playing down the left.
The first chance of the second half fell to Adebayor on 52 minutes as Guzan spilled Chadli's cross at his near post. Adebayor was onto it but couldn't turn home from the angle.
Kane entered the fray on 58 minutes and was straight into the action, winning a corner with a burst down the right before meeting Lamela's outswinger, his header straight at Guzan.
Villa went down to 10 men on 65 minutes when Benteke was shown a straight red card after a bust-up on halfway with Mason.
Lamela curled a free-kick over the bar on 73 minutes immediately after the introduction of Andros Townsend as we sought to capitalise on the advantage in numbers.
And after some further probing, we grabbed an equaliser in the 84th minute. After Naughton's cross was deflected out for a corner, Lamela swung the flag kick over to the back post where Chadli slid home.
The goal was a clear boost but we still had to be alert at the other end, Cissokho crashing a shot wide and off the stanchion.
Despite the game being in its latter throes we kept on plugging away in search of a winner - and we got a chance to net one when Townsend was tripped by Carlos Sanchez 25 yards away from goal in a central position. Up stepped Kane to smash the ball into the top corner with the aid of a slight deflection off the defensive wall, completing a dramatic turnaround.
We then saw out six minutes of stoppage time with relative ease to claim our first Premier League win in three attempts.
Aston Villa: Guzan, Lowton, Vlaar (c), Baker, Cissokho (Bent, 90+3), Westwood, Cleverley, Sanchez, Weimann (Richardson, 87), N’Zogbia (Agbonlahor, 74), Benteke. Substitutes (not used): Given, Cole, Clark, Grealish.
Spurs: Lloris, Naughton, Kaboul (c), Vertonghen, Rose; Capoue (Townsend, 72), Chadli, Eriksen (Lamela, 46), Mason; Adebayor (Kane, 58), Soldado. Substitutes (not used): Vorm, Fazio, Dembele, Stambouli.
Goals: Villa - Weimann (15). Spurs - Chadli (84), Kane (89).
Yellow cards: Villa - Cissoko, Weimann, Sanchez. Spurs - Eriksen, Vertonghen, Chadli.
Red card: Villa - Benteke.
Referee: Neil Swarbrick.