Bundesliga: Dortmund 0 Leverkusen 1
South Korea star Son helped former club Hamburg achieve a stunning double over Dortmund last season with two goals in each of their Bundesliga wins.
And he returned to haunt Jurgen Klopp by rounding Dortmund goalkeeper Roman Weidenfeller and scoring the game's only goal in the 18th minute at Signal-Iduna Park on Saturday after an error from former Leverkusen defender Manuel Friedrich.
Leverkusen defender Emir Spahic was sent off with 10 minutes left after a two-footed tackle on Robert Lewandowski, followed by a push at Henrikh Mkhitaryan, with Dortmund's Sokratis Papastathopoulos also given his marching orders in the dying stages.
The result deals a major blow to Dortmund's chances of winning the Bundesliga, with last year's runners-up already 10 points behind runaway leaders Bayern Munich, while Leverkusen remain four behind in second.
Friedrich retained his place despite Dortmund making five changes from the side that won at Saarbrucken in the DFB-Pokal on Wednesday, with Weidenfeller, Lewandowski and Jakub Blaszczykowski among the inclusions.
Spahic, Jens Hegeler and Gonzalo Castro came in for Leverkusen, who started brightly, despite Lewandowski testing goalkeeper Bernd Leno in the early stages.
Emre Can curled an effort over for the visitors and although Papastathopoulos wasted a header at the other end, Leverkusen took a deserved lead in the 18th minute.
They pressed Dortmund well and Friedrich gave the ball away to Can, who quickly found Castro.
The midfielder released Son and a great first touch saw him beat Weidenfeller before calmly slotting into the net with his left foot.
Lewandowski poked an effort at Leno again before Son – once more sent clean through, this time by a superb Stefan Kiessling pass – saw his effort clip the shoulder of the onrushing Weidenfeller and narrowly miss the goal.
The visitors continued to attack on the counter and a clever team move saw Hegeler chip just over as Leverkusen entered the break in style.
Chances were few and far between in the second half, with Kiessling doing well to clear the danger after a clever Friedrich header caused problems.
Sven Bender was forced off with an injury just before the hour-mark after a late Hegeler tackle and replaced by Marco Reus – returning from a calf problem of his own – but the change failed to spark Dortmund.
Nuri Sahin also had to be withdrawn, before Spahic's red card, but Dortmund failed to find an equaliser and were themselves down to 10 men in stoppage time as Papastathopoulos was dismissed for dissent.