The striker converted Adam Lallana’s 63rd-minute cross from six yards and quickly followed up with a low shot from a pass by Michail Antonio.
Antonio scored the third himself after another break out of defence in the 70th minute but Rovers replied four minutes later when substitute Darryl Duffy fired in from Jo Kuffour’s cross.
Jeff Hughes reduced the deficit further in stoppage-time with a cleanly struck spot-kick after Oscar Gobern’s foul on Kuffour, but it was too late for Rovers to avoid a sixth successive defeat.
Rickie Lambert almost marked his return to the Memorial Stadium with a goal, but the former Rovers striker, signed by Saints for £1million, was denied by a post from a 61st-minute free-kick.
Rovers paid the penalty for some poor defending after looking good for the first hour, but once Saints went ahead they always looked in control and fully deserved their success.