Marcus Bent's injury-time equaliser for Everton denied Southampton a deserved and vital win at St Mary's.
James Beattie inevitably marked his return to Southampton by volleying his side ahead.
But Peter Crouch headed Saints level from Rory Delap's long throw before Henri Camara took a return pass from David Prutton to fire Saints ahead.
It looked like being the winner until Bent popped up in the 92nd minute to lash in a shot from a narrow angle.
It took Beattie only four minutes to score against his old club.
Southampton failed to locate Cahill from a long throw and, although Paul Smith showed great reactions to save his header, Beattie reacted first to volley into the roof of the net from a tight angle.
Everton were caught out by Graeme Le Saux's quick throw and it needed a great save from the restored Nigel Martyn to snatch Henri Camara's cross from Peter Crouch.
Camara had a golden chance to level on 13 minutes when Crouch intercepted Alan Stubbs' pass but then appeared to hamper the Senegal international, who fired over from 12 yards.
Camara thought he had notched a winner for Southampton
Little had been seen of Everton as an attacking force since their goal, but it needed another fine full-length save from Smith to tip away Beattie's stunning volley.
Saints were certainly applying the pressure but almost gifted Everton a second goal when Claus Lundekvam's under-weight back-pass had Smith sprinting from goal to beat James McFadden to the ball.
Southampton continued to create chances and Rory Delap rose highest to Le Saux's corner but could not get his header on target from six yards.
Then Camara failed to hit the target with his shot after Crouch had knocked the ball down.
The pressure was bound to tell and Saints levelled on 36 minutes when Crouch rose to power in a near-post header from Delap's throw for his fifth goal in six games.
Everton were really under the cosh and Crouch saw his shot cleared off the line by Alan Stubbs, prompting a swift break that ended with Cahill powering a header inches over the bar from Pistone's cross.
Beattie fired Everton ahead against his old club.
Beattie was on defensive duty at the start of the second half, heading clear a dangerous Prutton cross as Southampton took up where they left off and they were denied a penalty when referee Andy D'Urso failed to spot David Weir's handball.
But Southampton would not be denied and took a deserved lead on 55 minutes through a beautifully-constructed goal by Camara.
The Senegal international's neat backheel found Prutton, whose return pass was an invitation for Camara to burst past Stubbs and clip the ball over Martyn for his second goal in as many games.
Everton boss David Moyes immediately threw Duncan Ferguson and Mikel Arteta into the fray but within minutes Arteta was booked for a cynical foul on Camara and from the resulting free-kick Le Saux volleyed inches wide.
Everton had three strikers on but Southampton were denied a third by Martyn's smart save from Camara's shot.
But just as Southampton looked like closing to within one point of Crystal Palace, Bent took on Calum Davenport and lashed his shot past Smith at the near post.
Southampton: Smith, Prutton, Lundekvam, Davenport, Bernard, Delap, Redknapp, Quashie, Le Saux, Crouch, Camara.
Subs Not Used: Jakobsson, Anders Svensson, Blayney, Telfer, Ormerod.
Goals: Crouch 36, Camara 55.
Everton: Martyn, Hibbert, Stubbs (Arteta 59), Weir, Pistone, McFadden, Cahill, Yobo, Carsley (Bent 45), Kilbane (Ferguson 59), Beattie.
Subs Not Used: Wright, Naysmith. Booked: Hibbert, Arteta.
Goals: Beattie 4, Bent 90.
Referee: A D'Urso (Essex).