Having suffered a 1-0 loss on the same ground three days earlier, Arsenal looked a different team as they attacked with great panache, but fell behind to a superb Stuart Armstrong strike after three minutes.
Nicolas Pepe, who scored on his previous Premier League start at Everton in December, levelled before Bukayo Saka gave Arsenal the lead with his fifth league goal of the season.
Southampton created several chances to claim a share of the points but found Gunners goalkeeper Bernd Leno in good form, and Alexandre Lacazette scored in the 72nd minute as Arsenal leapfrogged their hosts into eighth place in the table.
The home side stormed ahead after just three minutes when Armstrong met a James Ward-Prowse corner with a shot on the half-volley that flew past Leno and into the top corner of the net, despite the Arsenal goalkeeper getting a hand to it.
The lead lasted five minutes, as Arsenal pounced on a sloppy Jack Stephens pass and Granit Xhaka played Pepe into the area where he fired a low shot into the far corner of the net from 10 yards out.
Leno made a superb diving save from Che Adams to keep the scores level before Arsenal, six minutes from half-time, went ahead when Lacazette's incisive pass found Saka, who rounded Alex McCarthy and drilled the ball into the gaping net.
Armstrong carved an opening for Theo Walcott early in the second half but Leno was equal to the former Arsenal winger's effort.
Lacazette then finished a sweeping Arsenal attacking move from point-blank range at the other end to seal the victory with his eighth league goal of the season.