Two goals down to a first-half Wayne Rooney double, Manchester City thought they had snatched a point when Pablo Zabaleta followed up Yaya Toure's strike by driving home five minutes from time.
But after Rafael had been fouled on the edge of the area, Van Persie's free-kick flicked off Samir Nasri before cannoning in off the far post to take United six points clear at the top of the Premier League.
As United celebrated, Rio Ferdinand was struck by an object which drew blood from a cut close to his eye.
A supporter then ran onto the pitch and had to be restrained by Joe Hart before being carted away by stewards.
Sir Alex Ferguson then seemed to exchange words with former United striker Carlos Tevez before referee Martin Atkinson brought an end to a breathless afternoon.
Rooney's brace saw him jump to the top of United's scoring charts in Manchester derbies, his 10 goals taking him one clear of Sir Bobby Charlton.
United's defensive frailties have been obvious to everyone this term, so it came as something of a shock that City's rearguard was the topic of conversation at half-time.
Dominant during the opening 15 minutes, the Blues were caught cold by the visitors' first attack, started deep in their own half by Patrice Evra.
Van Persie cushioned a delightful return pass from Ashley Young's flicked header, allowing the winger to drive over halfway and drill a low cross to the edge of the area for Rooney.
Surrounded by three City defenders, Rooney took the ball to his left before cutting a shot back to the near post that Hart had no chance of keeping out.
City's concerns grew when Vincent Kompany was replaced by Kolo Toure, bringing additional uncertainty to a defence which conceded a second a short time later.
This time the surge came from the right wing as Antonio Valencia found an overlapping Rafael with a perfectly-weighted pass which the Brazilian crossed into the danger zone.
Rooney, who had been allowed to gallop unopposed from his initial pass, could not believe the space on offer which allowed him to tuck his first-time shot beyond Hart, allowing him to become the sixth player - and the youngest - to score 150 Premier League goals.
There was a conviction about United's play that was missing from City's.
Mario Balotelli, preferred up front to Carlos Tevez, was the subject of his manager's ire, yet Sergio Aguero was the one who had failed to control the Italian's through-ball when the scores were still level.
Aguero was also the player who took on the entire Red Devils defence single handedly and squeezed a shot towards the corner which David de Gea did well to keep out.
After wasting possession once too often, Balotelli was replaced by Tevez, the Italian heading straight down the tunnel, although not before fixing Mancini with an icy stare.
Ashley Young then had a goal incorrectly ruled out for offside when he tucked home the rebound from a Van Persie shot that had cannoned back off a post, and United were still digesting their disappointment as City countered to pull a goal back.
De Gea produced brilliant saves to deny Tevez and David Silva, but he was unable to keep out a third strike on goal from Yaya Toure, who calmly rolled Tevez's cut-back into the bottom corner.
It was the goal that lit the touchpaper for a thrilling finale, with tackles flying in from both sides as referee Atkinson desperately tried to keep control.
Van Persie headed Cleverley's cross over before De Gea somehow kept Silva's shot out at the other end when it flicked off his shoulder and onto the crossbar.
City had the momentum though and when Tevez's corner was half-cleared into Zabaleta's path, the Argentinian thrashed home a ferocious shot through a crowded penalty area.
There was one final twist to come, though, as Van Persie stepped up to end City's 37-match unbeaten run on home soil to send United six points clear at the top.