Everton took the lead in the 21st minute when Theo Walcott converted Dominic Calvert-Lewin's cutback.
But then a defensive mix-up allowed Son to round Jordan Pickford and superbly find the net from long distance.
Dele Alli scored Spurs' second on 35 minutes after Son's shot was parried by Pickford, and Kane gave the visitors a 3-1 half-time lead when he reacted quickest to Kieran Trippier's free-kick hitting the post.
Christian Eriksen volleyed in a fourth on 48 minutes, and three minutes later Gylfi Sigurdsson pulled one back for Everton.
But Son beat the offside trap to make it 5-2, before the South Korean set up Kane to complete his fourth double in his last four Premier League matches against Everton.
Spurs are third in the PL table on 42 points, five clear of fourth-placed Chelsea. Everton drop to 11th on 24 points.
Everton: 26 Dec v Burnley (A)
Spurs: 26 Dec v AFC Bournemouth (H)