Kevin De Bruyne's third goal in as many games put the Premier League leaders in front midway through the first half but Eric Dier's superb strike levelled matters in the 45th minute.
Toby Alderweireld's header handed Spurs the lead before Kane fired in a controversial first goal of the season to put Mauricio Pochettino's men 3-1 up. Erik Lamela's composed finish completed a sensational comeback as City conceded three in one half for the first time in two years.
The win moves Spurs to within three points of City, who have now lost back-to-back Premier League games and will relinquish top spot in the table should Manchester United beat Sunderland later on Saturday.
Chances were few and far between in the opening exchanges, though Hugo Lloris reacted well to turn Sergio Aguero's curling effort wide of the post before the Argentina striker was denied by a good block from Jan Vertonghen.
Tottenham began to grow into the game but handed City the advantage on 25 minutes. Kyle Walker's loose pass on the edge of the City area allowed Yaya Toure to burst forward on the break and pick out De Bruyne, who fired low beneath Lloris from the right of the box.
A fine low save from Lloris prevented Raheem Sterling from doubling City's lead within two minutes, before Lamela lashed over the bar when under little pressure inside the area and Willy Caballero - included in the starting XI with regular number one Joe Hart on the bench due to a minor injury - denied Kane's fierce drive.
The former Malaga goalkeeper could do nothing to prevent Dier levelling the scores in the 45th minute, though. His point-blank save from Son Heung-min saw the ball break to the 21-year-old outside the area and he drilled a low shot through the crowded box and into the bottom corner.
City - aggrieved that Tottenham's goal was allowed to stand despite Kyle Walker being clearly offside in the build-up - started the second half on the front foot but Spurs snatched the lead when Alderweireld headed Lamela's free-kick over the stranded Caballero, who tried and failed to claim the cross.
Spurs had their tails up and they doubled their lead just past the hour mark as Kane brought an end to a domestic goal drought lasting 748 minutes - albeit in controversial fashion - as he fired in the rebound after Christian Eriksen's free kick clattered the crossbar despite standing in an offside position.
City pushed for a way back into the match and Jesus Navas' stinging drive had Lloris at full stretch before Sterling pulled a low shot wide. At the other end, the offside flag came to City's rescue when Son poked Nacer Chadli's header over the line.
Lamela clinched the points for Spurs in fine style with a little over 10 minutes to play, collecting Clinton N'Jie's pass on the break before working his way around Caballero and slotting home.