The Hammers started brightly but were thankful to Lukasz Fabianski for producing a superb save on 22 minutes to tip Lucas Moura's shot over.
Spurs thought they had made the breakthrough just before half-time, but Son Heung-min's goal was ruled out for offside following a review by the VAR.
The hosts went ahead on 64 minutes when a corner from Giovani Lo Celso was diverted into his own net by Tomas Soucek.
Jarrod Bowen struck the post for West Ham in the 78th minute, before Son played in Kane to claim his 30th goal in Premier League London derbies.
Victory moves Spurs up to seventh on 45 points.
West Ham remain 17th on 27 points.
Spurs: 2 Jul v Sheffield United (A)
West Ham: 1 Jul v Chelsea (H)