Manchester City came from behind to defend their Premier League title and ensure no final-day surprises as they won 4-1 at Brighton.
When Sadio Mane scored to put Liverpool 1-0 up against Wolves, the title was going to Anfield for the first time since 1990.
That looked all the more likely when Glenn Murray headed Brighton in front 27 minutes in.
But Pep Guardiola's men did what champions do and responded instantly through Sergio Aguero (28), with Aymeric Laporte's header then settling any nerves 10 minutes later.
That allowed City to relax and after half-time Riyad Mahrez put daylight between the sides before Ilkay Gundogan's fantastic free-kick made it four.
Liverpool would end up winning 2-0 after another Mane goal but finished second overall, staggeringly on 97 points.
Chelsea finish third after a 0-0 draw at Leicester, while Tottenham took the final Champions League spot after a 2-2 draw at home to Everton.
Eric Dier opened the scoring for Spurs in the third minute before Theo Walcott and Cenk Tosun turned things in Everton's favour.
Congratulations to @ManCity! Your Premier League champions 2018/19 👏👏👏 pic.twitter.com/gGkHnacUYg — Premier League (@premierleague) May 12, 2019
However, Christian Eriksen ensured Spurs ended a fantastic week with a point.
Arsenal must now hope to win the Europa League to make the Champions League after a 3-1 win at Burnley.
Pierre-Emerick Aubameyang scored twice to ensure a share of the golden boot alongside Mane and Mohamed Salah, with Ashley Barnes responding for Burnley before Eddie Nketiah's stoppage-time third.
While City were celebrating on the south coast, it was an embarrassing day for Manchester United at the end of a tumultuous season.
They were beaten 2-0 at home by relegated Cardiff, the side they comprehensively beat 5-1 in Ole Gunnar Solksjaer's first game in charge in December.
Nathaniel Mendez-Laing scored twice for Neil Warnock's men, once from the spot, as the Bluebirds went out with a bang.
Newcastle ended their season in style, beating already-relegated Fulham 4-0 at Craven Cottage.
Jonjo Shelvey opened the scoring (nine) and Ayoze Perez added a second two minutes later. Fabian Schar and Salomon Rondon wrapped things up in the second half.
There was an eight-goal thriller at Selhurst Park as Crystal Palace beat Bournemouth 5-3.
What a day in the #PL... pic.twitter.com/qT5ypZGvgD — Premier League (@premierleague) May 12, 2019
Loan striker Michy Batshuayi (24, 32) scored a fisrt-half brace and Jack Simpson put through his own goal as the home side went 3-0 up.
Jefferson Lerma pulled one back and then Jordon Ibe made it interesting before Patrick Van Aanholt thought he had settled matters.
Josh King pulled another back before Andros Townsend had the final say.
West Ham finished well, beating FA Cup finalists Watford 4-1 at Vicarage Road.
Mark Noble (twice), Manuel Lanzini and Marko Arnautovic all netted for the Hammers, with Gerard Deulofeu replying for the home side who had Jose Holebas sent off, meaning he will miss the cup final.
Huddersfield ended their season and their two-year Premier League stint with a 1-1 draw at Southampton, Alex Pritchard responding to Nathan Redmond's goal.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport Staff');
ga('pacontentapi.set', 'dimension2', 'c05953b8-1598-462e-b74c-b23fdb7a575c');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:football,paservice:sport:uk,paservice:sport:world');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'City clinch title as Liverpool forced to settle for second'});