The Korean scored the winner just 18 minutes into the game, which both sides finished with just 10 men following the late dismissals of Emir Spahic and Sokratis Papastathopoulos
South Korea star Son helped former club Hamburg achieve a stunning double over Die Schwarzgelben last season with two goals in each of their Bundesliga wins.
And he returned to haunt Jurgen Klopp's men again by rounding Dortmund goalkeeper Roman Weidenfeller to score the game's only goal on Saturday, after an error from former Leverkusen defender Manuel Friedrich.
The visitors' Emir Spahic was sent off with 10 minutes left after a two-footed tackle on Robert Lewandowski, followed by a push on Henrikh Mkhitaryan, but Dortmund's Sokratis Papastathopoulos was also given his marching orders in the dying stages.
The result deals a major blow to the hosts' chances of winning the Bundesliga, with last year's runners-up already 10 points behind runaway leaders Bayern Munich, while Leverkusen remain four behind Pep Guardiola's men 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 reduced to 10 men in stoppage time when Papastathopoulos was dismissed for dissent, thus compounding a miserable evening for Klopp.