It was another display of maturity and clinical finishing on the big stage in Europe and we fully deserved the victory, which was our 100th under Mauricio Pochettino.
Both sides produced some tidy football in the first half and it was a moment of quality that opened us up. Andriy Yarmolenko's flick set up Pierre-Emerick Aubameyang to drill in as we went behind for the first time in the competition this season.
But back we came and after Roman Burki saved well from Christian Eriksen and Eric Dier in the lead-up to half-time, it was Kane who was on point to crack home an equaliser out of nothing in the opening exchanges of the second half.
Son, prolific against Dortmund during his career in the Bundesliga, then bagged the winner with 14 minutes remaining after great work by Dele Alli to retain possession on the left, making it an unhappy birthday for Dortmund manager Peter Bosz.
Substitute Fernando Llorente went through on goal late on in an entertaining and atmospheric Tuesday night encounter but a heavy touch denied him his first Spurs goal and there was a moment of concern for everyone in the stadium in the aftermath as keeper Burki hit his head on the ground and was carried off on a stretcher.
We remained in control throughout the period of stoppage time that followed to keep up our European momentum and consolidate first place with 13 points from a possible 15.
Mauricio made four changes to the team that lost 2-0 at Arsenal on Saturday. Serge Aurier and Danny Rose came in for Kieran Trippier and Ben Davies in the wing-back areas, while Harry Winks was restored to the midfield at the expense of Mousa Dembele and former Bundesliga forward Son took the place of Moussa Sissoko. The latter did come on in the second half, though, to continue his and Dier's record of having featured in every one of our matches so far in 2017-18.
CHANCE: AUBAMEYANG PUTS IT WIDE - 19mins
We put together some nice passages of play but it was Dortmund who went closest to breaking the deadlock when Yarmolenko clipped the ball over the top for Aubameyang, who sprung the off-side trap dead centre but Hugo Lloris was out quickly and did enough to put the striker off, his effort on the turn trickling just wide. We were still finding space down the right through Aurier, while Son hurled himself at a couple of dangerous crosses into the box but was out of luck. The off-side flag was up against him on the second one anyway.
GOAL: BORUSSIA DORTMUND 1-0 SPURS - PIERRE-EMERICK AUBAMEYANG - 31mins
A clever move undid our defence and allowed Aubameyang to fire his side ahead. Raphaël Guerreiro's forward pass was sublimely flicked into the the striker's path by Yarmolenko with a back-heel and Aubameyang made no mistake, drilling low past Lloris.
Above: Eric Dier climbs above Serge Aurier and Pierre-Emerick Aubameyang.
SAVES: BURKI HEROICS DENY US AN EQUALISER - 40mins
Dortmund goalkeeper Burki produced two fine saves inside a minute. First, he got down to his right to beat away Eriksen's first-time shot from Rose's centre, but what followed next was highly impressive. A corner came in, Dier connected with a great header but Burki somehow clawed the ball away from under the crossbar with a big right hand and Kane and Son couldn't capitalise at the back post.
GOAL: BORUSSIA DORTMUND 1-1 SPURS - HARRY KANE - 49mins
Kane only needed half a chance to get us back on level terms four minutes after the restart. Dele rolled a short sideways pass to him on the edge of the area, he got a quick sight of goal as he looked up and wasted no time in drilling inside the near post, finding the bottom corner out of nothing.
GOAL: BORUSSIA DORTMUND 1-2 SPURS - HEUNG-MIN SON - 76mins
Some of our one-touch build-up play was sublime, befitting of the Champions League, with Dele and Eriksen very much to the fore but we couldn't quite finish things off - that was until the 76th minute when Dele did ever-so well to skip away from a couple of challenges on the left side of the box before coming in and teeing up Son to lash into the top corner. Moments later, following a good break, Eriksen's header from Rose's cross flew just wide.
CHANCE: LLORENTE CLOSE BUT CONCERN FOR BURKI - 89mins
Dortmund also showed some neat play at times and after working an opening for Aubameyang, Dier came across to block. At the other end, Son played Llorente clean through in space but a heavy first touch carried the ball away from the striker and, as he came out to gather at his feet, Burki's head hit the ground and he was forced off, replaced for the last few minutes by veteran stopper Roman Weidenfeller.
MAURICIO POCHETTINO SAID
“We didn’t deserve to go down on the (scoreline), I think it was an even game but in the second half the reaction was good and the early goal from Harry Kane helped us to come back into the game. I think we played well and deserved the victory. Everything was good – the mentality, the reaction, the way we played. Of course, we were qualified but to be first in the group was so important for us."
HARRY KANE SAID
"It’s a very proud achievement and the players, the fans, the Club, everyone should be proud. Many people doubted us before we started the group but we’ve come out on top with a game to go so we have to enjoy this moment and make the most of it."
Borussia Dortmund (4-3-3): Burki (Weidenfeller 90+2), Toljan, Bartra, Zagadou (Toprak 77), Schmelzer (c), Kagawa (Castro 66), Weigl, Gotze, Yarmolenko, Aubameyang, Guerreiro. Substitutes (not used): Sahin, Dahoud, Philipp, Schurrle.
Spurs (3-5-2): Lloris (c), Dier, Sanchez, Vertonghen, Aurier, Eriksen (Sissoko 85), Winks, Dele (Dembele 81), Rose, Son, Kane (Llorente 86). Substitutes (not used): Vorm, Trippier, Foyth, Davies.
Goals: Borussia Dortmund - Aubameyang 31; Spurs - Kane 49, Son 76.
Yellow cards: Borussia Dortmund - Schmelzer 52, Toljan 90+6.
Referee: Clément Turpin.
MAN OF THE MATCH
Following a fine display in central midfield, Harry Winks was named Man of the Match by our supporters on social media, taking 38 per cent of the overall vote.
The result means we go into matchday six against APOEL in December in an unassailable position atop Group H, playing to maintain our unbeaten record in this season's competition. It's back to Premier League duties now, though, and a home match against West Bromwich Albion on Saturday. The Baggies, who sacked manager Tony Pulis on Monday, come to Wembley Stadium, connected by EE, for a 3pm kick-off.