Tottenham twice surrendered the lead after a Jan Bednarek own goal gave them a first half advantage whilst Son Heung-Min scored to make it 2-1 in the 70th minute.
But James Ward-Prowse provided two similar assists three minutes apart for Elyounoussi and Adams to head calmly into the goal to overturn the deficit with 10 minutes to play.
Second-half substitute Steven Bergwijn thought he rescued a point for Spurs when he hit the back of the net in added time, but had it ruled out after VAR showed he had wandered into an offside position.
The win lifts Southampton into the top of the table in 10th place on 28 points from 23 games.
Tottenham (3-4-2-1): Lloris; Davies, Romero, Sanchez; Reguilon Bergwijn 83), Hojbjerg (Bentancur 60), Winks, Emerson; Son, Moura (Kulusevski 76); Kane
Unused subs: Gollini, White, Sessegnon, Scarlett, Doherty, Rodon
Goals: Bednarek (18 OG), Son (70)
Bookings: Sanchez (59)
Southampton (4-4-2): Forster; Perraud, Salisu, Bednarek, Walker-Peters; Elyounoussi (Diallo 90+6), Romeu, Ward-Prowse, S. Armstrong; Adams (Long 88), Broja (Walcott 90)
Unused subs: Caballero (GK), A. Armstrong, Djenepo, Valery, Stephens, Diallo, Smallbone
Goals: Broja (23), Elyounoussi (79), Adams (82)
Bookings: Perraud (76), Romeu (77), Forster (84)