But Sir Alex Ferguson's side underlined their determination to wrestle the title back from City with a sensational response though van Persie, whose deflected free-kick handed the champions their first Premier League defeat of the season and their first home league loss since Everton won at Eastlands in December 2010.
United only had three attempts on target in the entire match, but they made them all count, starting in the 16th minute.
Ashley Young picked out Rooney and the United striker scuffed a low shot past wrong-footed City goalkeeper Joe Hart into the corner of the net.
City were rocked by that setback and Rooney netted again in the 29th minute, this time meeting Rafael da Silva's cross with a fine, first-time finish that gave Hart no chance.
That made Rooney the youngest player to reach 150 Premier League goals at 27 years and 46 day.
Young had a goal harshly ruled out for a offside in the second half when he fired home after van Persie's shot hit the bar.
Then Ivorian midfielder Toure slotted home from Carlos Tevez's pass in the 60th minute and City thought they had escaped when Argentine defender Zabaleta smashed in a low shot after United failed to clear a corner.
But there was a sting in the tale as United won a free-kick deep into stoppage-time and van Persie curled in a shot that deflected off Samir Nasri and flashed past Hart.
The remarkable finale was marred however when United defender Rio Ferdinand was hit by an object thrown from the crowd as he celebrated the winner.