Mexico were looking to build on their famous victory over the defending champions Germany in the group opener and, after a slow start this weekend, Javier Hernandez headed wide from a free-kick by Hector Moreno.
Only a Germany win will prevent South Korea being knocked out with a group game remaining.
Javier Hernandez and Miguel Layun of Mexico celebrate their team's victory in the World Cup match against South Korea on June 23, 2018, in Russian Federation. Bet on Mexico to win.
It's the 50th career global goal for Hernandez, known as "Chicharito".
Mexico's Javier Hernandez celebrates scoring their second goal with Andres Guardado.
Vela nearly turned provider two minutes later with a neat ball into Layun, but the former Watford man lashed his effort over from close range.
Mexico appeared in control but allowed the South Koreans to set up a nervy finale when Son struck a stunning goal from range three minutes into injury time.
South Korea wanted a penalty of their own after the restart when Moon Seon-min's strike clipped Carlos Salcedo's arm, but the referee correctly waved away their appeals.
- South Korea have lost their last four World Cup matches; their joint-worst losing run at the World Cup, also losing four between 1986 and 1990.
Shin Tae-yong's team did have one back in stoppage time when Son curled a sensational effort into the top corner, but Mexico held on in the final moments to pick up a huge win.