Two late Rickie Lambert penalties have seen Southampton extend their unbeaten run to ten games and strengthen their place in the Championship's top two.
After an impressive start by the league leaders they took the lead just after the quarter-hour mark through the league's top scorer Lambert.
Adam Lallana broke clear of the Lions' defence, unselfishly squaring to Lambert, who smashed his close-range effort in off the crossbar.
The Saints weren't ahead for long though as seven minutes later, Jose Fonte deflected Andy Keogh's shot into his own net before the comeback was completed soon after.
In the 28th minute Millwall skipper Paul Robinson finished well from 12 yards after a loose ball from a corner broke to the centre-back, who finished like a seasoned striker.
Lambert almost drew the visitors level minutes after the half-time break but saw his shot cleared off the line.
Millwall seemed destined for a unlikely win until five minutes before the end when Lambert was brought down and converted the resulting spot kick.
The Saints were then awarded another penalty two minutes from time and Lambert made no mistake from 12 yards to send the visiting fans into raptures.
The win means Southampton move five points clear of third-place West Ham while Millwall remain 19th.