Two goals in under three second-half minutes saw Juventus come back from 1-0 down to knock Tottenham Hotspur out of the Champions League, with a 2-1 win at Wembley putting them through to the quarterfinals 4-3 on aggregate.
Tottenham started at a blistering pace and tested Juve keeper Gianluigi Buffon within the opening three minutes as Son fired in an angled drive that the goalkeeper pushed away.
But Juve created a half-chance four minutes later, Douglas Costa swinging in a cross from the right that was marginally too high for Higuain at the far post.
The visitors, playing with three at the back, were soon troubled by Son again but his attempted volley at goal was miscued and the Serie A champions cleared.
Christian Eriksen played a pass through to Harry Kane, who was crowded out as he tried to turn inside the area, and with 15 minutes gone Kane got away from Giorgio Chiellini and rounded Buffon only to hit the side netting from an angle.
Juventus were certain that they should have had a 17th-minute penalty when Jan Vertonghen slid in on Costa and brought him down but — despite furious appeals — referee Szymon Marciniak gave only a goal kick.
Son headed straight at Buffon from a Kieran Trippier cross as the action swung back to the other end, and the South Korea international was again in the thick of the action as his forceful run brought a corner that was cleared.
Vertonghen, having escaped punishment for his challenge on Costa, went into the book for a rash tackle on Dybala as he tried to turn into space.
The pace had become a little less frantic as the half-hour mark arrived, and the flag went up when Chiellini played an early pass over the top looking for Higauin.
Dele Alli tried to change all that as he fizzed in a low drive that Buffon saved after the ball had been headed away from the lurking Kane with Son on the floor after Andrea Barzagli had appeared to tread on him.
Kane failed to trouble Buffon with an ambitious angled effort from out on the left before Juve’s Alex Sandro went into the book for a clumsy hack at Trippier.
With a little over five minutes left until the break, Son powered onto a fine Ben Davies pass and drove into the area before unleashing an angled shot that fizzed just past the far post.
But the South Korea international, outstanding on the night, would not be denied and, when a low Trippier cross came in from the right his mis-hit strike looped in to give Spurs a deserved lead after 39 minutes.
Miralem Pjanic fired wide from the edge of the box as Juventus looked for an instant response before the same player was booked for a high challenge on Alli.
As the second half began, Mehdi Banatiua was shown a yellow card for a crude challenge on Alli before Costa forced Eric Dier to concede an early corner that was wasted by Pjanic.
Chiellini went into the book when he barged into Alli as the Spurs midfielder threatened to get away from him, and Alli was next to see a yellow card for a challenge on Sami Khedira.
A crossfield pass from Eriksen gave Son another chance to advance into the Juve area, but his attempt curled high and wide.
Visiting coach Massimiliano Allegri had seen enough and made changes on the hour, bringing on Kwandwo Asamoah for Blaise Matuidi and Stephan Lichtsteiner for Medhi Benatia as Juve reverted to four at the back.
Soon afterwards Dybala skewed a hurried volley well wide after Spurs had failed to deal with a cross convincingly, and within moments Juventus had levelled, Higuain prodding home after 64 minutes after Lichtsteinder’s cross was headed to him — their first effort on target.
And Spurs were stunned less than three minutes later when the tie was turned on its head by Dybala, who raced onto Higuain’s pass to fire high into the net.
Higuain almost found Costa for a third with the home side wobbling, and Mauricio Pochettino brought on Erik Lamela for Dier as he tried to get them back onto the front foot.
Lamela quickly darted to the byline but saw his cross headed away by Chiellini, and the defender then made a brilliant interception with Son waiting.
As the game moved into the last 10 minutes, the superb Chiellini was there again to head a dangerous Davies cross clear before Eriksen’s strike from just inside the box was deflected wide.
Son drove narrowly wide from the edge of the box as Spurs searched for the goal that would rescue their Champions League campaign, Stafano Sturaro coming on for Higuain soon afterwards as Allegri made another switch.
Pochettino took off Alli and brought on Fernando Llorente with time running out — but Tottenham were agonisingly close to a 90th-minute leveller when Kane’s header beat Buffon and hit the inside of the post before being hacked away by Barzagli.