Leroy Sane and Raheem Sterling struck late as 10-man Manchester City snatched a dramatic win at Schalke on a night dominated by VAR controversy.
The unfancied Germans turned the first leg of their Champions League last-16 tie on its head when they were awarded two penalties late in the first half, the first after a lengthy VAR stoppage.
Both were confidently struck home by Nabil Bentaleb, cancelling out Sergio Aguero's opener, but Sane's stunning leveller against his former club revived City's hopes after Nicolas Otamendi was sent off.
Sterling then stole in for a remarkable last-minute winner.
That assured City of the advantage heading into the return at the Etihad Stadium, but fallout from a clash they were expected to win comfortably could rage for some time.
The main talking point was Schalke's equaliser after Otamendi was adjudged to have handled, with play held up for around three minutes. It was unclear whether it was intentional and it also seemed the referee's pitchside monitor was broken.
It was a breathless encounter. Schalke, 14th in the Bundesliga, had largely been written off before the game and they began as if their only ambition was damage limitation.
City, who have conceded at least two goals in six of their seven games in the Champions League knockout stages under Pep Guardiola, will also be without suspended Fernandinho for the return leg in Manchester on 12 March.
Argentine Aguero, who netted two hat-tricks in his previous three Premier League games, scored with a simple tap-in after a pass from home keeper Ralf Faehrmann was intercepted.
City completely overran the Germans at the start but instead of scoring again, they inexplicably fell back, allowing determined Schalke to come forward.
The Royal Blues were rewarded when a handball earned Otamendi a booking and the hosts a spot kick that Algeria international Bentaleb converted after the use of the Video Assistant Referee (VAR).
Schalke incredibly went ahead seven minutes later after earning another penalty when Fernandinho clumsily brought down Salif Sane.
Bentaleb again stepped up and scored his second goal of the evening despite keeper Ederson getting his hands on the ball.
With coach Guardiola growing increasingly frustrated on the City bench, the visitors tried for an early goal after the break but this time came up against an organised Schalke backline.
To make matters worse for City, Otamendi was sent off with a second booking in the 68th to take any pace left out of City's game before Leroy Sane's missile saved the day for the English side.
Sterling then slipped into the box late in the game to grab victory with a dramatic winner.