City knew that victory over Queens Park Rangers on Sunday would clinch the title but was on the verge of handing the trophy to Manchester United when it trailed 2-1 with 90 minutes played.
United players thought they had retained the title with a 1-0 win at Sunderland that ended at almost the same moment that City substitute Edin Dzeko equalized in the second minute of injury time.
The title was still headed to Old Trafford at that point but the lead in the standings changed hands again two minutes later — for a fourth and final time in a single day — when Sergio Aguero sealed a 3-2 win that meant City finished above defending champion United on goal difference.
"To win it like this is incredible," City manager Roberto Mancini said. "I have never seen a final (day) like this."
Aguero sprinted bare chested around the field swinging his sky blue shirt above his head as the fans at the Etihad Stadium erupted with joy, the perennial underachievers finally tasting success.
United beat Sunderland 1-0 through a goal by Wayne Rooney but Red Devils fans celebrating at the Stadium of Light fell silent as news of Aguero's goal reached them.
Players stood stunned, staring blankly into space.
"It's a cruel way (to lose the title)," United manager Alex Ferguson said. "We've experienced many ups and downs in the 25 years I've been here: most of them have been great. We've won the title three times on the last day and today we nearly did it."
City clinched the third league title of its 132-year history with 89 points and a record identical to United's of 28 wins, five draws and five losses.
The season, which with 1,066 goals was the highest scoring in the Premier League's 20-year history, effectively hinged on the two head-to-head matches between City and United. City won both, 6-1 and 1-0.
Arsenal finished 19 points back in third place but clinched Champions League qualification for a 15th straight season with a 3-2 win at West Bromwich Albion, which needs a new manager for next season after Roy Hodgson's decision to take over as England coach.
Tottenham was another point back in fourth place after Emmanuel Adebayor and Jermain Defoe scored for a 2-0 win over Fulham. Spurs must wait until Saturday before discovering whether they will be in the qualifying rounds for next season's Champions League.
If Chelsea beats Bayern Munich in Saturday's Champions League final, the Blues will take England's fourth and final spot, leaving Tottenham with only a place in the second-tier Europa League.
Newcastle finished in fifth place after losing 3-1 at Everton and Chelsea was sixth — its lowest position since 2002 — despite a 2-1 win over Blackburn.
With Blackburn and Wolverhampton Wanderers already relegated, Bolton filled the final relegation spot after a 2-2 draw at Stoke. QPR finished a single point and a single place above the relegation zone despite its late defeat at City.
All 10 matches on the final day of the nine-month season began at the same time. City was in first place at kickoff but United went top when Rooney headed in Phil Jones' 20th-minute cross for his 27th goal of the season — a tally beaten only by Arsenal striker Robin van Persie's 30.
The pendulum swung back toward City 19 minutes later when QPR goalkeeper Paddy Kenny spilled Pablo Zabaleta's shot onto the post and over the line, leaving both Manchester clubs 1-0 up at halftime.
Three minutes into the second half, QPR striker Djibril Cisse maintained his record of either scoring or being sent off in every game since joining the club in January when he latched onto a defensive mistake and shot low past goalkeeper Joe Hart — pushing City back down into second place.
QPR was down to 10 men moments later when Joey Barton was sent off following an off-the-ball incident that left Carlos Tevez rolling on the gound. The infamously volatile Barton was enraged by referee Mike Dean's decision to act on the advice of his linesman, kicking Aguero and trying to head butt Vincent Kompany as he was dragged from the field.
At Sunderland, Rooney hit the bar with a free kick, missed the target with a close-range effort and hit the post in the final minute but all his efforts were in vain whether successful or not.
Although Jamie Mackie put QPR ahead in the 66th with a diving header, Dzeko atoned for a glaring miss when he headed David Silva's corner past Kenny.
Aguero then collected a ball from substitute Mario Balotelli, burst past a couple of defenders and shot low into the net from about eight yards.
"I don't want to wake up from this," said Zabaleta, who had not scored in 20 previous Premier League appearances this season. "You just look at the players and the fans, everybody deserves this.
"The most important thing for any team is when you believe. If you believe in yourself, you win. We believed until the last minute."
Having missed out on a record-stretching 20th title, United must now strengthen for next season if it is to wrest the title back from City, which has spent about 400 million pounds ($635 million) on new players since being bought by in 2008 by Sheik Mansour, a member of the Abu Dhabi ruling family.
"I'd like to say on behalf of Manchester United, congratulations to our neighbours," Ferguson said. "A fantastic achievement to win the Premier League."
Everton finished in seventh place, topping local rival Liverpool for first time since 2005. Liverpool lost 1-0 at Swansea, which ended its first Premier League season in 11th. Norwich was 12th after a 2-0 win over Aston Villa, while Wigan beat Wolves 3-2 in the day's other match.