United have now gone three matches without a win in the top flight, leaving them outside the division's top six after playing a game more than the sides around them.
Southampton had gone nine league games without a win heading into this one, and their lack of confidence was clear to see from the off as Alex McCarthy's poor clearance gifted the visitors an early chance.
Marcus Rashford failed to pick out Herrera with his backheel, however, and the keeper recovered in time to block the shot from Lukaku when it eventually arrived.
The Red Devils' evening went from bad to worse soon after as Soares guided a 25-yard free kick into the top corner of the net after Rashford brought down Mario Lemina.
Having barely created anything from open play - McTominay's wayward header from Ashley Young's cross aside - United somehow found themselves on level terms at half time thanks to a couple of quickfire goals.
Lukaku ended his 12-match scoring drought in United colours by lifting the ball over McCarthy, before Herrera flicked it home at the end of a cutback from Rashford, who also played a key part in the opener.
Herrera had a powerful shot from range kept out by McCarthy but Southampton, who had won just one of the previous five league games that they led in this term, got in an attempt of their own through Nathan Redmond's free kick.
The home side held firm in a quiet opening 25 minutes of the second half, at which point substitute Manolo Gabbiadini and Lukaku exchanged shots, neither getting the better of the opposition keeper.
Despite United needing a goal and not looking like scoring it, Jose Mourinho held off from making a change until the final quarter of the match, with Diogo Dalot coming on for his Premier League debut because of an injury to Luke Shaw.
United have made a habit of snatching victories late on in games in recent weeks, but Redmond's powerful shot, forcing De Gea into the save of the match 10 minutes from time, was the closest either side came to a winner in a low-quality second half.
SOUTHAMPTON (3-4-3): McCarthy; Yoshida, Vestergaard, Stephens; Valery, Lemina (Davis 93'), Hojbjerg, Cedric; Armstrong, Obafemi (Gabbiadini 64'), Redmond
MANCHESTER UNITED (5-3-2): De Gea; Young, Matic, Jones, McTominay, Shaw (Dalot 72'); Fellaini, Herrera, Pogba; Rashford (Martial 77'), Lukaku (Lingard 86')