You are not permitted to download, save or email this image. Visit image gallery to purchase the image.
City had fought like tigers to haul themselves back after Wayne Rooney's first-half double had taken the England striker through the 150 Premier League goal barrier but strikes from Yaya Toure and Pablo Zabaleta proved in vain as Dutchman Van Persie marked his first Manchester derby with the winner in injury time.
Everton also scored twice in stoppage time to beat Tottenham Hotspur 2-1 at Goodison Park - Nikica Jelavic's decisive goal sending Everton back into the top four.
United's victory made up for the two league defeats they suffered against City last season as Roberto Mancini's side went on to win the title for the first time since 1968.
However, it was marred by an ugly incident immediately after Van Persie's deflected free kick had beaten Joe Hart when a celebrating Rio Ferdinand was struck by an object thrown from the City fans and suffered a cut to his face.
"It's unfortunate that a City fan runs on and coins are thrown. That shouldn't happen. The same thing happened at Chelsea, which was masked by all the other things. We could have done without that," United manager Alex Ferguson told the BBC.
Fergsuon preferred to revel in his side's victory which ended City's unbeaten start to the season and snapped their two-year unbeaten run at home in the Premier League.
"You couldn't take your eyes off it today, it was so engrossing. It tells you about the quality of the Premier League, it's such a great league," Ferguson said.
Rooney put United ahead after a 16th minute counter-attack which ended with his scuffing a shot low into the corner.
It was not the sweetest connection but made the 27-year-old the youngest player to reach 150 Premier League goals - a feat only managed previously by Thierry Henry, Alan Shearer, Robbie Fowler, Andy Cole and Frank Lampard.
Rooney made it 2-0 in the 29th minute with a cool finish after fine link-up play between Rafael and Antonio Valencia.
It was clinical by United and City, who had already lost centre back and skipper Vincent Kompany, appeared deflated.
Mancini lost patience with striker Mario Balotelli seven minutes into the second half, replacing him with former United striker Carlos Tevez.
While Balotelli went off to stew in the dressing room, the game suddenly changed in the space of a minute on the hour.
Ashley Young was wrongly judged offside as he slotted into an empty net after Van Persie's shot hit the woodwork and almost immediately City went down the other end where Tevez showed great composure to set up Toure fire past David De Gea.
Belief flooded back into the City ranks and Zabaleta's thumping finish made it 2-2 in the 87th minute and even raised home hopes of an unlikely victory.
Van Persie had other ideas, however, and stepped up in stoppage time to fire a free kick past Hart with the aid of a slight deflection off Samir Nasri.
Tottenham were minutes away from a fourth consecutive league victory that would have consolidated their place in the top four when Clint Dempsey put them ahead at Goodison Park in the 76th minute.
Everton, beaten only twice in the league this season, equalised with a header from former Tottenham player Steven Pienaar before Jelavic poked home the winner.