In his first Manchester derby since leaving Arsenal in August, Van Persie netted from a free kick in the third minute of stoppage time to clinch a 3-2 win.
"It was obviously a difficult angle, but we work on that together at the training ground," United striker Wayne Rooney said. "I had no doubt he could score from there, and thankfully he's won us the game."
The goal wiped out City's comeback after the hosts responded to Rooney's first-half double with goals from Yaya Toure and Pablo Zabaleta after the break.
The end of the match was marred by crowd disorder that resulted in United defender Rio Ferdinand bleeding above his left eye after being hit by a coin and City goalkeeper Joe Hart confronting a pitch invader.
Also Sunday, Everton dislodged Tottenham from fourth place by beating the north London side 2-1 with two stoppage-time goals, while Liverpool won 3-2 at West Ham to sit four points behind the top four.
United was at Etihad Stadium for the first time since relinquishing the Premier League trophy for City to end a 44-year English league title drought.
United went ahead in the 16the minute after a lightening counterattack that saw 10 touches in 15 seconds leading to the goal.
After United goalkeeper David de Gea threw the ball out, Ashley Young headed on for Van Persie to then release the winger down the left flank with a chested pass.
Young slotted the ball through to Rooney, whose mishit shot bobbled through Gareth Barry's legs into the net.
City still dominated but couldn't make it count, and Rooney was on target again in the 29th after being left unmarked in the penalty area.
Winger Antonio Valencia and Rafael Da Silva combined down the right flank before the defender picked out Rooney, who evaded Kolo Toure to take his derby tally to 10 goals, overtaking Bobby Charlton's United record by one.
Mancini was becoming increasingly anxious on the touchline, bellowing out instructions to his players and clearly unhappy at their defensive frailties.
City's fortunes only turned after striker Mario Balotelli was replaced early in the second half by Carlos Tevez, pulling one back after Young had a third goal for United ruled out for offside.
De Gea pulled off a double save, first denying Tevez and then Aguero from the rebound. But United's defence failed to close down Tevez, who squared for Yaya Toure to score on the hour.
The equalizer came in the 86th minute when Van Persie's headed clearance from a corner went straight to Pablo Zabaleta on the edge of the area, and the Argentine drove the half-volley into the net.
But after United defender Rafael Da Silva was fouled by Carlos Tevez, Van Persie dispatched the free kick in the net in the third minute of stoppage time.
"I don't know what happened," City manager Roberto Mancini said. "I understood before it was dangerous that free kick, and we made a mistake by only putting three players in the wall.
"I called Carlos to come back into the wall, but from the bench I was too far away."
The blow comes not long after City exited the Champions League in the group stage for the second successive year. But Mancini is sure his team can overhaul United's six-point lead and retain the Premier League title.
"Even though we have lost this game we have shown we can win the title this year," he said. "It is clear, we need to work hard and stop making mistakes. We can't continue to go one or two goals behind because it is difficult to recover."
At Goodison Park, Everton showed its powers of recovery.
Clint Dempsey put Tottenham ahead in the 76th with a long-range strike that took a slight deflection before looping over goalkeeper Tim Howard.
But in stoppage time, Everton midfielder Steven Pienaar headed in a goal against his former club from Seamus Coleman's cross. And Nikica Jelavic sealed the win with a close-range finish from Apostolos Vellios' cross.
At Upton Park, former West Ham defender Glen Johnson put Liverpool in front after 11 minutes, but Mark Noble equalized from the penalty spot after Joe Allen had been penalized for handling the ball.
The hosts were in front at halftime after Liverpool captain Steven Gerrard inadvertently headed into his own goal.
But in the 76th, another former West Ham player was on target for Liverpool, with Joe Cole scoring his first league goal of the season.
Liverpool's comeback was completed by James Collins turning the ball into his own net after Jordan Henderson swung in a cross aimed at makeshift striker Jonjo Shelvey.