Arsene Wenger made 10 changes to the side that beat Bournemouth at the weekend and his heavily altered side struggled to gel throughout the night as the visitors defended stoutly.
In the end the only surprise about the result was that Southampton did not win by more as they missed several good chances after the interval en route to ending Arsenal’s unbeaten run and recording just their second win in north London in 24 visits.
While the Gunners could not getting going in the first period, Southampton looked bright and it was therefore no surprise when Jordy Clasie gave the visitors the lead in the 13th minute, smashing the ball beyond Emiliano Martínez from the edge of the box.
Southampton’s energy kept Wenger’s men quiet and they deservedly doubled their lead in the 38th minute. Sofiane Boufal was given too much time and space on the left, picking out Ryan Bertrand, who arrowed his left-footed shot into the bottom corner from the edge of the area.
The Gunners looked brighter after the break and missed a good chance to halve the deficit three minutes after half-time when Aaron Ramsey fired straight at Forster from close range.
In a frantic start to the second period, the Saints then went close through Boufal and Shane Long before they wisely took the sting out the game.
Arsenal threatened to set up a thrilling finale as they pushed hard in the final 10 minutes, substitute Alex Oxlade-Chamberlain missing the target from 12 yards when he should have done better.
Sam McQueen and Pierre-Emile Hojbjerg nearly had the final say for Southampton as they missed good chances in the final few minutes on the break as Southampton booked their place in the last four of the League Cup in impressive fashion.