By winning a second straight match for the first time in two months, defending champion United went two points behind leader Chelsea, which is at Arsenal on Sunday.
Manchester City slumped to a seventh successive draw after Hull held the big-spending club 1-1, while West Ham defeated Burnley 5-3 and Bolton remained in the relegation zone after drawing 1-1 at Fulham.
In Saturday’s other matches, Blackburn was held to a 0-0 draw by Stoke, Wigan beat Sunderland 1-0 and Tottenham was at Aston Villa in the late encounter.
Avram Grant took charge of Portsmouth for the first time after being appointed manager following Paul Hart’s dismissal. But Grant — whose first and last matches as Chelsea manager were losses to United — once again had the misfortune to face the 18-time English champions after 18 months away from management.
Grant’s team got off to the worst possible start when Rooney tumbled in the penalty area following a clumsy challenge by Michael Brown. But after Rooney converted from the penalty kick in the 25th minute, Kevin-Prince Boateng leveled from the spot at the other end after Nemanja Vidic fouled Frederic Piquionne.
Rooney restored United’s lead three minutes into the second half when he latched onto Ryan Giggs’ pass. The England forward grabbed a third minutes later when Piquionne was penalized for fouling Giggs and he slotted in the penalty kick.
And Giggs scored himself in the closing minutes to leave Pompey rooted to the bottom of the standings.
At Manchester City, not even the return of Brazil forward Robinho after three months on the sidelines could return Mark Hughes’ side to winning ways.
Shaun Wright-Phillips had put City ahead on the stroke of half time with a 25-meter (yard) strike, but Jimmy Bullard leveled in the closing minutes from the penalty spot after Joleon Lescott was adjudged to have handled.