The title race went down to the wire, with City needing to match Liverpool's result against Wolverhampton Wanderers in order to win a fourth league crown under Pep Guardiola.
However, Matty Cash's goal midway through the first half at Etihad Stadium put Villa, managed by Liverpool great Steven Gerrard, ahead going into half-time.
Ex-Liverpool star Philippe Coutinho then put Villa 2-0 up but, as it did against Queens Park Rangers to win its first Premier League title 10 years ago, City launched an incredible comeback.
Ilkay Gundogan was the hero. The substitute dragged City back into it and then, after Rodri had restored parity, scored from close range to complete a sensational fightback.
It was needed, with Liverpool beating Wolves 3-1, but City has now won its sixth Premier League title, and a fourth in the space of five seasons, while for Liverpool, its dream of a quadruple is now over.
A treble, though, remains on the cards if the Reds can win next week's UEFA Champions League final against Real Madrid and add that trophy to the Carabao Cup and FA Cup they have already won.