Roberto Mancini's team launched a fine comeback after Wayne Rooney's double had put the visitors 2-0 up but the Dutchman had the final say with an injury-time free kick.
Wayne Rooney had put United two goals up after 28 minutes as United counterattacked in clinical fashion.
But Yaya Toure pulled one back for City to set up a thrilling last half hour, and Pablo Zabaleta sent the home support wild in the 86th minute when he made his club's relentless pressure count by shooting through a crowded goalmouth.
However, it was Van Persie, the player City tried to sign in the summer, who had the final say in a magnificent game with a deflected 25-yard free kick that nestled in the bottom corner.
United’s landmark victory in the biggest domestic match of the season so far condemned City to its first defeat at Etihad Stadium for nearly two years.
In a match that typified the passion, entertainment and commitment of the Premier League, Sir Alex Ferguson’s team will feel that justice was done, given that Toure’s strike came 60 seconds after Ashley Young had a goal disallowed for offside even though he appeared to be level.
United has now claimed four big scalps in the opening 16 matches of the season, having already won at Liverpool and Chelsea and beaten Arsenal at home.
With Hollywood royalty Tom Cruise and Robert Duvall watching on, Mancini sprung a surprise by opting to pair Sergio Aguero with Mario Balotelli rather than Carlos Tevez.
For United, David De Gea got the nod to start in goal, Tom Cleverley was chosen to partner Michael Carrick and Antonio Valencia returned after three weeks on the sidelines.
City completely dominated the early exchanges but after Balotelli and Aguero had wasted good opportunities, Rooney’s classic sucker-punch goal put the visiting side 1-0 up.
A brilliant Van Persie chest down on the halfway line allowed Young to gallop down the left flank, from where he found Rooney in space on the edge of the box. The forward’s shot was poorly hit but it caught out an unmoved Joe Hart in goal, dribbling into the corner of the net.
The home fans were momentarily stunned, and there was another blow when skipper and defensive leader Vincent Kompany hobbled off after 20 minutes with what appeared to be a groin injury.
Curiously, Kompany was replaced not by Joleon Lescott but Kolo Toure, who was not deemed good enough to be selected for City’s Champions League squad.
Toure looked a nervous wreck every time the play was in his general direction and United soon took full advantage of City’s reshuffle.
After 28 minutes, Cleverley won an important tackle in midfield and David Silva failed to track Rooney’s central run. The striker greedily gobbled up Rafael’s cross from the right flank to unerringly side-foot his 150th league goal.
By the time the opening period ended, the home support had been quietened, City was running out of ideas and United looked in control.
Mancini waited until six minutes into the second half to replace the disappointing Balotelli with Tevez, by which time the visiting team had also been forced into a change with Chris Smalling taking the place of the injured Jonny Evans.
City got a foothold in the match at the hour mark, 60 seconds after Young had a goal ruled out for offside even though replays suggested he was level when he pounced on the re-bound from a van Persie shot that cannoned off the post.
A single City attack produced three saves from De Gea before Tevez teed up Yaya Toure to light the sky blue flare and put the home side back in the match.
With the two sides trading some breath-taking attacks, Silva was inches from equalizing after 78 minutes when his shot skimmed De Gea’s shoulder before whacking the crossbar.
By now, City was pouring forward relentlessly. In a late piece of drama that is increasingly typical of Mancini’s team, Zabaleta appeared to have secured the draw with his first goal of the season.
But van Persie had the final say on a remarkable afternoon.