Manchester City drew against Bournemouth, ending their Premier League title challenge with one matchweek remaining.
Just like that, the destination of the Premier League title has been decided a matchday before the final weekend. Arsenal will be crowned champions on 24th May.
City did, however, extend their domestic unbeaten run to 15 matches, snatching an equaliser deep into stoppage time.
The match began with a burst of intensity from both sides.
In the fourth minute, Antoine Semenyo beat Marcus Tavernier and cut the ball back. Matheus Nunes left it for Jeremy Doku, who shaped to shoot with his right before switching to his left, only to find Dorde Petrovic.
15 minutes into the match, Adrien Truffert whipped a ball into Eli Junior Kroupi, who laid it off for a running Tavernier into the left half-space inside the City box. The full-back played it across the face of goal for Evanilson, who squandered a gilt-edged opportunity.
In the 39th minute, Bournemouth took the lead through a stunning curler from Kroupi into the far corner, with Gianluigi Donnarumma left helpless. Truffert had provided the assist.
Shortly after the restart, Semenyo found Erling Haaland, who took the ball in his stride and slipped Nico O'Reilly through on goal. Petrovic produced an excellent close-range save to preserve Bournemouth's lead.
The Cherries came close to doubling their advantage when Tavernier picked out David Brooks with a fine cross, only for the Welshman to direct a tame effort straight at Donnarumma.
Two minutes later, Brooks found himself through on goal again, this time released by Enes Unal. However, he could only strike the post in a one-on-one with Donnarumma.
In the fifth minute of stoppage time, Rayan Cherki launched a ball into the Bournemouth box. After a scramble of headers and ricochets, the ball dropped for Rodri, whose effort cannoned off the post. The rebound fell to Haaland, who drove the ball across goal and watched it clip the far post before nestling inside the net.
With one minute remaining, City had salvaged a draw but could not find the winner that would have kept their title hopes alive until the final day. The magic that has defined so many of their late comebacks could not be conjured this time.
City's title charge is over, but what are the four things we learnt from this match?
Guardiola's selection gamble backfires against Bournemouth
Pep Guardiola opted to start Mateo Kovacic ahead of Cherki or Phil Foden, with the Croatian tasked with threading balls in behind, though the impact was limited.
The deeper starting position restricted Kovacic's influence, preventing him from producing the incisive play City needed in the final third.
Bernardo Silva was deployed in the final third on the right wing, with Semenyo tucking inside to create overloads centrally.
The structure in possession was a 3-2-5, with Marc Guehi, Abdukodir Khusanov, and Nunes forming the back three; Kovacic and Rodri as the midfield two; Doku and Bernardo as the wide men; and O'Reilly and Semenyo supporting Haaland in the front line.
In recent matches, Bernardo had been operating in the midfield two, but Bournemouth's aggressive man-to-man press prompted Guardiola to turn to Kovacic's ball-carrying qualities to progress through pressure.
That decision forced Bernardo, too important to drop in a match of this magnitude, out to the right wing in the final third, a position that neutered his influence on the game.
It did not work in City's favour. Truffert was a constant menace down Bournemouth's left flank, driving forward relentlessly with Tavernier providing cover behind him.
With the game slipping away, Guardiola threw caution to the wind, introducing Cherki, Foden, and Savinho simultaneously in the 56th minute.
The impact was immediate. City circulated the ball with far greater purpose, with Foden and Savinho providing genuine width and delivery from the left flank.
Could Phil Foden be the answer to Bernardo Silva's departure?
Foden could yet prove to be the long-term replacement for Bernardo Silva, who is set to depart City this summer.
At the start of this campaign, Foden was deployed deeper alongside Rodri, and the impact was immediate.
He was connecting play, threading passes in behind, and helping City control the tempo, qualities that led many on social media to declare it the "final form" of Foden, a complete footballer capable of influencing a match from any area of the pitch.
That description, a complete player, is a term more commonly associated with Bernardo, whose extraordinary versatility has made him arguably the most important player of the Guardiola era at City.
However, after those opening fixtures, Foden was pushed into a more advanced role, with his contribution measured primarily in goals and assists rather than overall influence.
He fulfilled that brief excellently, scoring decisive goals and contributing assists, but there was a sense that his ceiling was higher when operating in a deeper position.
Against Crystal Palace, he was given that freedom once more alongside Bernardo, and he excelled, most notably with an audacious no-look heel flick assist that underlined just how complete a player he has become.
Even after being introduced as a substitute in this match, his brief was to drive City forward, which he did through incisive carries and well-weighted long balls under pressure.
With Bernardo's departure on the horizon, a deeper, more central role could await Foden next season, and if he is trusted with it consistently, City may not need to look beyond their own squad for a replacement.
A domestic double softens the blow of a dramatic title collapse
Given the form City were in mid-season, dropping points consistently to a point where the Premier League title appeared to be Arsenal's to lose, few could have predicted what followed.
Somehow, the Citizens fought back and made the title race compelling, aided by a handful of Arsenal slip-ups along the way.
It was, ultimately, a season defined by inconsistency. City picked up crucial points in moments that mattered, only to drop them in fixtures they were expected to win comfortably.
That inconsistency extended to individuals as well. Foden, for instance, was instrumental in some of City's most important victories yet failed to impose himself on several of the more demanding occasions.
Injuries did not help matters either. Rodri and Doku were both absent for significant spells, while Josko Gvardiol picked up an injury in January, a situation that prompted the January acquisition of Guehi to shore up the defence.
The arrivals of Cherki, Rayan Ait-Nouri, and Tijjani Reijnders added further depth, though integrating new signings into Guardiola's demanding system inevitably takes time.
Those players will be all the better next season, and the squad as a whole does not require significant reinforcement heading into next campaign.
Ultimately, a domestic double of the FA Cup and the Carabao Cup represents a fine return for a season that, at its lowest points, had some supporters fearing a trophyless campaign.
One result, one season: City's inconsistency laid bare
This match encapsulated City's season in microcosm.
Some players were solid without being sharp, while Bournemouth were precise and decisive in almost every action.
City gave the ball away cheaply throughout, forcing passes and surrendering possession in dangerous areas of the pitch.
Guehi and Khusanov combined to lose possession 15 times, while Rodri alone squandered it on 19 occasions, a staggering figure by his own standards, and one that reflected how effectively Bournemouth's game plan revolved around disrupting him.
That those three players, the deepest in City's structure, were losing the ball so frequently made each turnover all the more dangerous, gifting Bournemouth opportunities in the most threatening of positions.
City's players looked rattled and struggled to maintain their sharpness across the full 90 minutes, and the Cherries were ruthless enough to take advantage of every moment of hesitation.