Chelsea forced Manchester City to put their Premier League title party on hold on Saturday, winning 2-1 to strengthen their grip on a top-four place as Liverpool kept their Champions League qualification hopes alive.
Victory for City in a rehearsal for the Champions League final would have confirmed them as English champions for the third time in four years but they must wait for their inevitable coronation.
Hundreds of City fans had gathered outside the empty Etihad Stadium hoping to spur their team on to victory.
As supporters spilled into the road and blue flares were lit, the coaches carrying the players needed to slow down to get through the crowds as they made their way to the ground.
Pep Guardiola's men were on the right track when Raheem Sterling gave them the lead but Hakim Ziyech levelled in the second half and Marcos Alonso grabbed the winner in the dying seconds.
Sergio Aguero could have made his side's task much easier on the stroke of half-time but saw his casual Panenka spot-kick easily saved by Edouard Mendy, with Guardiola turning away in frustration.
The win lifts the Londoners into third spot above Leicester and six points clear of fifth-placed West Ham with just three games left for Thomas Tuchel's side.
Outgoing champions Liverpool beat Southampton 2-0 in the late kick-off to stay in the mix for the top four but a 3-1 defeat at Leeds was a hammer blow for managerless Tottenham.
Guardiola was frustrated at the manner of his side's defeat -- just their fifth loss of the season -- but they have a huge 13-point lead over second-placed Manchester United.
"We missed our chance in the last minute of the first half for the penalty, but we were in a good position," he told Sky Sports.
"We conceded a goal, suffered for 15 minutes, then reacted well, but in the end they scored."
On the missed spot-kick, Guardiola said: "I have always said to him (Aguero), take one decision and take it full convincing, so he decided to do it this way. I have nothing to add."
Tuchel's in-form team ended City's dreams of a historic quadruple by beating them in the FA Cup semi-final last month and they once again proved tricky opponents.
Guardiola made nine changes from the side that saw off Paris Saint-Germain in midweek while Chelsea made five changes following their triumph over Real Madrid.
Sterling broke the deadlock shortly before half-time, tucking home after a poor touch from Aguero following a pass from Gabriel Jesus.
City should have gone into the break two goals in front after Jesus won a spot-kick when he was bundled over by Billy Gilmour but Argentine striker Aguero squandered the chance.
As the second half wore on the visitors started to establish a foothold and they equalised just after the hour mark when Cesar Azpilicueta picked out Ziyech, who drilled home from the edge of the area.
The finish was frantic. Chelsea substitute Callum Hudson-Odoi had a goal ruled out for a marginal offside before Sterling had a penalty appeal turned down.
Alonso slotted home the winner in stoppage time after Timo Werner pulled the ball back to complete the turnaround but City could be crowned champions as early as Sunday, if Aston Villa beat United.
Tuchel admitted the match would have had a different complexion if Aguero had converted from the spot.
"If they score the penalty maybe it is over before it starts -- at 2-0 you have no chance to come back," the Chelsea boss said.
"I was impressed by the reaction and the performance in the second half. If you want to steal all three points here after being down, you need a bit of luck, decisions from the referee."
Liverpool manager Jurgen Klopp was delighted to see his team back to winning ways following two costly draws, with Sadio Mane and Thiago Alcantara both finding the net at Anfield.
Speaking about his side being in the race for the top four, he told the BBC: "We are, kind of. It's not impossible but it's difficult. We will give it a try and see where we get to."
Earlier, Crystal Palace beat already relegated Sheffield United 2-0.