Danny Ings, who matched Matt Le Tissier and James Battie as the third player in Southampton history to score in five-straight league matches, gave the visitors a lead on 52 minutes.
Southampton had their share chances in the opening half with Nathan Redmond coming closest before Ings broke the deadlock after the break.
The forward raced onto a long ball over the top from Jack Stephens and calmly slotted past Martin Dubravka.
The goal led to an open game with Cedric and Moussa Dejenepo nearly snatching another to add to Southampton’s lead, and Allan Saint-Maximin’s right-footed effort was denied to corner of the goal by Alex McCarthy at the other end.
Jonjo Shelvey then capitalised on Saints’ inability to add to its advantage when his header picked out the bottom corner in the 68th minute.
Southampton tried to restore their lead as Shane Long, James Ward-Prowse and Ryan Bertrand coming close.
Bertrand was left wide open on the back post, but couldn’t direct his header on frame from Ward-Prowse’s corner kick.
Federico Fernández, however, steered a right-footed shot from very close range into the top right corner three minutes from full-time.
Newcastle: Dubravka, Willems, Dummett, Clark (Schar 45) Fernandez, Manquillo, Saint-Maximin, Shelvey, Hayden, Almiron (Longstaff 86), Joelinton (Carroll 59)
Unused subs: Darlow (GK), Atsu, Gayle, Krafth
Goals: Fernandez (87)
Bookings: Shelvey (48)
Southampton: McCarthy, Bertrand, Bednarek, Stephens, Cedric, Hojbjerg, Ward-Prowse, Redmond, Djenepo (Boufal 73), Ings (Adams 88), Long
Unused subs: Gunn (GK), Yoshida, Romeu, Vestergaard, Obafemi
Goals: Ings (52)
Bookings: Ward-Prowse (44), Hojbjerg (62), Cedric (67)