Jurgen Klopp’s men had to come from behind at St. Mary’s after Shane Long’s early opener.
However, Naby Keita’s first goal for the club brought the visitors level before Salah and Henderson’s strikes took Liverpool two points clear of Manchester City, who still have a game in hand.
Southampton started the evening just five points above the relegation zone at the other end of the table, but had won their past two games as part of a general upturn in form since Ralph Hasenhuttl took charge in December.
And the hosts looked more like the side going for the title in the early stages as they went in front on nine minutes.
Ryan Bertrand’s cross picked out the run of Pierre-Emile Hojbjerg into the box and his flick-on looped over Andy Robertson for Long to control and score just his fourth goal in his last 50 Premier League appearances.
That was also the Irishman’s 50th Premier League goal and he should have had 51 shortly after when he failed to connect with another dangerous Bertrand cross and Virgil van Dijk nearly turned the ball into his own net against his old club.
Keita has failed to live up to expectations since his £53 million move from RB Leipzig last summer, but the Senegalese could hardly have picked a better moment to score his first goal for the club nine minutes before the break.
Southampton were left angry that Salah was not flagged offside in the build-up, but the ball eventually fell for Trent Alexander-Arnold and his in-swinging cross was met too powerfully with his head by Keita for Gunn to keep out.
Liverpool had far more control of the game after the break, but had to wait until 10 minutes from time for the crucial goal and it came on the counter-attack from a Southampton corner.
Salah latched onto Henderson’s headed pass and ran from inside his own half before curling in his first goal in nine games from just outside the box.
Henderson had been left on the bench from the start by Klopp, but the Liverpool captain made his presence felt as a substitute as he then burst into the box to finish off Roberto Firmino’s low cross to seal a vital three points.