In Seoul, Son scored in the sixth minute of stoppage-time to give South Korea their third win from five games.
Lee Keun-ho, last year’s Asian Player of the Year, headed in the first goal in the 60th minute, but Khalfan Ibrahim equalized for Qatar with a low shot from the edge of the penalty area three minutes later.
In a first half that South Korea controlled, there was little hint of the drama to follow. Chances were at a premium in a match in which frustrations spilled over into a late brawl on the pitch.
South Korea continued to push forward for the win and they were rewarded with virtually the last kick of the game as Son, who has nine goals for Hamburg SV in the Bundesliga this season, tapped home from close range.
South Korea coach Choi Kang-hee was relieved after the dramatic win.
“Our players kept going right until the end and were rewarded with victory,” Choi said. “We know what we have to do to get to the World Cup and our desire to get there is strong.”
Qatar coach Fahad Thani questioned the amount of stoppage-time allowed by the Japanese referee.
“There were five minutes of extra-time, but they gave six and it was a mistake. We showed enough ability and talent to take us through qualification, and to the World Cup ... but you never know what the result will be in football.”
In Tashkent, Server Djeparov scored the lone goal in the 63rd minute for Uzbekistan in a narrow win that was a further blow to Lebanon, who lost their captain and were hit by a match-fixing scandal.
Lebanon captain Roda Antar retired days ahead of the match and the team is still recovering from a match-fixing scandal in which 24 players were suspended, with defender Ramez Dayoub being banned for life. Six of the players have represented the national side in the World Cup campaign.