Haller put West Ham ahead in the 37th minute by slotting a low shot in off the post for his fifth goal of the season, which was enough to give the Hammers only their second win in 11 league games.
The visitors thought they had made it 2-0 soon after when the impressive Michail Antonio powered his way through the heart of the home defense before drilling an unstoppable shot past McCarthy.
However, the incident was reviewed by VAR and the goal was disallowed for handball against Antonio.
Danny Ings nearly equalized with 20 minutes left but his volley hit the crossbar, and Shane Long fired wide from the rebound. Ings then had a goal ruled out for a foul in the build-up as the last 15 minutes featured a number of chances at both ends.
The loss leaves Southampton mired in the relegation zone, behind 17th-place Aston Villa on goal difference.
Source: Fox Sports