The Tottenham Hotspur forward curled his 85th minute set piece past substitute goalkeeper Patrick Sequeira minutes after Esteban Alvarado had been sent off for handling the ball outside the penalty area.
Wolverhampton Wanderers forward Hwang Hee-chan had given the Koreans the lead in the 28th minute, coolly stroking in 18 yards out after being fed the ball from the right by Yoon Jong-gyu.
Son and Kwon Chang-hoon both saw efforts cleared off the line within seconds of each other as the home side sought a second before Costa Rica levelled with four minutes left in the half.
Gerson Torres’ ball from wide on the right drifted over the Korean defence, only to be met at the far post by Jewison Bennette.
Bennette added a second for the Costa Ricans in the 63rd minute when he slotted in from close range after Kim Seung-gyu had saved Anthony Contretas’ initial header.
Costa Rica’s hopes of holding on for the win were dealt a blow when Alvarado was shown the red card for gathering the ball outside the penalty area after a long punt forward, and Son thumped the resulting free kick home to earn the Koreans a draw.
South Korea will take on Uruguay, Ghana and Portugal at the World Cup while the Costa Ricans have been drawn to face Japan, Germany and Spain.