Wayne Rooney’s two first-half goals had looked set to give United a comfortable victory before City hit back through Yaya Toure and Pablo Zabaleta in an engrossing encounter at the Etihad Stadium.
But, in stoppage time, the late free-kick from Van Persie, who had been wanted by City before he joined United in the summer, flicked off Samir Nasri in the wall and condemned the defending champions to their first home defeat in the top flight in two years.
The thrilling goal, for which Nasri’s defending was poor, was marred by unpleasant scenes as celebrating United centre-back Rio Ferdinand was struck by an object seemingly thrown from City fans.
Greater Manchester Police also confirmed a man was arrested inside the stadium on Sunday on suspicion of committing a racially aggravated public order offence after officers heard racist chanting.
On the field, a United win in part avenged their double derby losses last season and Holland international Van Persie’s late strike also moved Sir Alex Ferguson’s team six points clear at the top of the table.
It had been a typically adrenalin-fuelled opening five minutes, with neither set of players pulling out of tackles amid a fierce and fiery atmosphere but City began to dominate possession in the early stages.
However, against the run of play, Sir Alex Ferguson’s United took the lead in the 16th minute as Rooney’s tame finish from just inside the penalty area left Joe Hart wrong-footed and concluded a slick counter-attack.
Roberto Mancini’s team were stunned, lost their momentum and suffered a further setback in the 21st minute when a groin injury meant captain Vincent Kompany had to be substituted and replaced by Kolo Toure.
City became ragged and were duly punished in the 29th minute when Rooney doubled United’s advantage from Rafael da Silva’s low, right-side cross to net his 150th Premier League goal.
Shortly after half-time, United were themselves forced into a defensive change when centre-back Jonny Evans, who had sustained an injury before the interval, had to be replaced by Chris Smalling.
Mancini’s patience with the ineffective Mario Balotelli, surprisingly selected in the first XI, ran out soon after and the reported AC Milan transfer target stormed down the tunnel having been swapped for former United striker Carlos Tevez.
In contrast to last season’s encounter, when United and Ferguson were strongly criticised for their negative tactics, the game continued in a far from cagey style and Ashley Young saw an effort disallowed for a controversial offside decision after Van Persie had hit a post.
To underline United’s frustration at the ruling, City moved straight up the other end of the pitch to pull a 60th-minute goal back as Yaya Toure kept his composure after goalkeeper David de Gea had produced an excellent double save from David Silva.
The goal set up a frenzied final half-an-hour of end-to-end football and City got the equaliser their second-half performance deserved when United’s deficiencies at set-pieces were again exposed as Zabaleta’s 86th-minute half-volley at a corner flew into the back of the net.
There was, however, to be another twist as Van Persie struck deep into stoppage time with a curling free-kick which clipped Nasri’s bizarrely dangling leg to give Hart no chance.