In a tightly-contested affair at Borussia-Park on Friday, the South Korean settled the encounter between the two top-four hopefuls with a superb curling effort just after the hour mark.
Gladbach started the game in a positive fashion, but could have been behind at half-time had Stefan Kiessling done better with a free header shortly before the break.
Sami Hyypia's side did find the breakthrough in the second half, however, and held firm despite late pressure from the visitors, as Gladbach fell to just their second home defeat in the Bundesliga this season.
Max Kruse led the line up front for Gladbach, while the away side welcomed Sidney Sam back into their starting XI following a thigh injury.
The hosts made the brighter opening and orchestrated the first meaningful effort on 19 minutes when Patrick Herrmann's well-controlled volley looked destined for the bottom left-hand corner, but he was denied by a smart stop from Bernd Leno.
Shortly after the half-hour mark, Kruse saw a fierce strike from 25 yards deflected over the crossbar, as Leverkusen's defence held firm against a slick Gladbach attack.
It was the visitors who finished the half stronger, however, but Son shot off-target from distance.
Kiessling had arguably the best chance of the opening period three minutes before the break when he headed Gonzalo Castro's corner well over the crossbar despite being unmarked.
The home side saw Juan Arango flash an effort wide of the post shortly after the restart, but it was Leverkusen who finally broke the deadlock on 62 minutes.
Sam broke free down the right before laying into the path of Son, who came inside and hit a fierce strike from 20 yards past the despairing Marc-Andre ter Stegen.
The hosts piled forward in search of an equaliser and Kruse forced a good save from Leno in the closing stages, but Leverkusen clung on for a crucial three points.
The result leaves Leverkusen in second with a 10-point gap to Gladbach, who sit just outside the Champions League spots in fifth.