Sunderland had taken an early lead through new signing Emanuele Giaccherini and Paolo Di Canio's side looked set to claim their first win of the season until Fonte met James Ward-Prowse's free-kick with a downward header that goalkeeper Keiren Westwood could not keep out.
Southampton started with record signing Dani Osvaldo on the bench, after the Italy striker signed from Roma for a fee that could rise to £14.5 million ($22.6 million, 16.9 million euros).
The home side were unchanged from the team that won 1-0 at West Bromwich Albion on the opening weekend, while Sunderland manager Di Canio brought Craig Gardner and Modibo Diakite into his starting line-up.
Sunderland were beaten 1-0 by Fulham in their opening game despite dominating the match and they seemed determined to learn from their mistakes, with Giaccherini putting them ahead in the third minute by heading home a Sebastian Larsson corner.
Southampton were quick to apply pressure at the other end, however, and Jay Rodriguez was only denied an equaliser by the assistant referee's flag after converting a through-ball from Rickie Lambert.
Lambert also forced Westwood into a fine save with a header from a Ward-Prowse cross, while the Saints felt they should have been awarded a penalty shortly prior to half-time after Adam Lallana tangled with John O'Shea.
Southampton manager Mauricio Pochettino added Osvaldo to the mix at half-time and the hosts continued to force the issue, with Rodriguez slamming a half-volley narrowly wide early in the second half.
Rodriguez then saw a header caught by Westwood from Osvaldo's clipped pass, before Sunderland raced down to the other end and Jozy Altidore was thwarted by Artur Boruc.
With Sunderland holding firm, Pochettino rolled the dice one last time by introducing Gaston Ramirez for Lallana, and their persistence paid off with two minutes to play when Fonte claimed the equaliser.
Jose Fonte late show rescues spirited Southampton
Advertisement