Jay Rodriguez gave the Saints a shock third-minute lead when he latched onto a poor back pass from Michael Carrick to tuck home around the advancing David De Gea.
But Rooney levelled just five minutes later, slotting into the bottom corner following an excellent through ball from Shinji Kagawa.
Kagawa then hit a post on United’s next attack and it took some excellent goalkeeping from Artur Boruc to keep the hosts at bay as returning Robin van Persie and Danny Welbeck both threatened danger.
United finally doubled their advantage on 27 minutes when Patrice Evra climbed highest at the far post to meet Van Persie’s free-kick, the France defender leaving Rooney with the easiest of tap-ins from barely a yard.
But the hosts were then forced to survive a second-half Southampton bombardment, with the visitors spending almost the entire second period camped in the United half.
Mauricio Pochettino’s team pushed forward in search of a leveller, with substitute Adam Lallana having a significant influence as Rickie Lambert twice went close.
Briefly, United relieved the pressure, with Van Persie’s goalbound header brilliantly saved by Boruc before the Dutchman had an effort ruled out from a Rooney cross for offside.
Southampton were soon back on the offensive, though, with De Gea producing an excellent flying save to turn away Lambert’s free-kick.
Nemanja Vidic flung himself in the way of another Lambert piledriver before Rooney, who finished playing on the left as defensive cover for an overrun Evra, ensured the Saints’ final assault got nowhere and his side kept the valuable three points.