The South Korea forward cashed in on Bjorn Engels’ stoppage-time error to snatch the three points for Jose Mourinho’s side after Engels’ 53rd-minute header had looked like earning Villa a priceless point in their fight against relegation.
Fifth place in the Premier League is now likely to offer a Champions League spot following Manchester City’s two-year European ban, although it is yet to officially be confirmed and City are appealing.
The result moved Spurs – who face fellow European hopefuls Chelsea and Wolves in their next two top-flight games – above surprise package Sheffield United into fifth, while Villa remained a point above the drop zone in 17th.
It all started so well for Dean Smith’s side, who were gifted the lead after just nine minutes.
Anwar El Ghazi’s deflected cross completely flummoxed Alderweireld and, under little pressure from Mbwana Samatta, the Belgium defender stabbed into his own net from five yards.
The visitors appeared unnerved and Villa looked for an instant second, swarming all over Tottenham with Jack Grealish curling wide from the edge of the box.
Yet they desperately needed to regain their composure as they struggled to handle a marauding Grealish, who continued to create clear openings for Villa.
Villa were the dominant force and Spurs had struggled to create yet levelled out of the blue after 27 minutes when Alderweireld made amends.
The hosts failed to clear Son’s corner and switched off when the ball dropped to Alderweireld who swivelled to fire a neat finish high past Reina on the half-volley.
Villa had paid the price for missing their chances and almost fell behind 10 minutes before the break but Alli horribly miscued his attempt to curl in from an angle.
The game opened up and Hugo Lloris kept out El Ghazi’s drive from distance before Alli’s shot was blocked and Steven Bergwijn’s follow-up hit Engels.
Spurs had fought their way back after a nightmare start but completed their first-half recovery in injury time.
Bergwijn raced down the right only for his run to be halted by the sliding Engels.
Referee Martin Atkinson initially refused to give a penalty but a VAR review correctly awarded the spot-kick and, while Reina went to his right to save Son’s penalty, the forward prodded in the rebound.
The scoreline was harsh on Villa but they regrouped at the interval and swiftly fired a warning when El Ghazi’s snapshot flew straight at Lloris.
It was a warning which Spurs ignored, though, and Villa levelled after 53 minutes as Engels earned his own redemption when he rose above Alderweireld to head in Grealish’s corner.
Yet the hosts failed to build on the equaliser and needed Reina to be at his best until he was beaten at the death.
First, Bergwijn shot at the goalkeeper and the veteran made a smart save after Son found space in the box just after the hour.
Marvelous Nakamba blocked Bergwijn’s effort 10 minutes later and Alli should have done better than to shoot tamely at Reina when Ezri Konsa’s mistake allow him through.
The former Liverpool goalkeeper also twice denied Son with five minutes left, expertly turning his angled drive wide and, from the resulting corner, making a low stop.
But Son stole the points in the fourth minute of stoppage time when Engels missed a routine clearance and the striker ran through to roll under Reina.