Pep Guardiola's Manchester City earned a famous 3-1 victory over his former side Barcelona in a thrilling encounter at the Etihad Stadium in the Champions League group stage.
Lionel Messi gave Barcelona the lead on 21 minutes after a quick counter attack, before Ilkay Gundogan levelled for City from close range as the hosts pounced on a defensive mistake.
Kevin De Bruyne then put City ahead seven minutes after the break with a finely struck free-kick from 20 yards, before Gundogan grabbed his second from eight yards with 15 minutes remaining.
City, beaten 4-0 at the Nou Camp a fortnight ago, have finally ended their hoodoo against Barcelona following five defeats, and with Monchengladbach drawing with Celtic, the result means City can qualify for the knockout stage if they beat the Germans later this month.
Guardiola made two changes from the 4-0 win at West Brom on Saturday as Willy Caballero and De Bruyne came in for Claudio Bravo and Nolito respectively, while Barcelona were still missing the injured Gerard Pique, Jordi Alba and Andres Iniesta.
Hungarian referee Viktor Kassai was at the centre of attention from the off, booking Raheem Sterling for simulation after Samuel Umtiti's challenge in the area, despite replays showing the French defender just caught the toe of the City man.
Despite some early pressing from City, the visitors took the lead on the counter-attack. Breaking from a City free-kick, Neymar drove forward on the left unmarked, squared for Messi with a defence-splitting pass, allowing the Argentine to coolly slot under Cabellero for his 90th Champions League goal on his 100th start.
Though the counter-attack was devastating, City only had themselves to blame having left their defenders too deep in the Barcelona half.
Barcelona then began to dominate, missing several chances to double their lead as City's defence opened up.
First, Luis Suarez was inches away from latching onto Messi's improvised volley across the face of goal, before Suarez then saw an effort from inside the area blocked well by Nicolas Otamendi.
City levelled against the run of play six minutes before the break through Gundogan, who finished easily from close range from Sterling's unselfish ball after Sergi Roberto had been pressured into a loose pass.
It was nearly 2-1 to the hosts a moment later as Barcelona again lost possession from City's pressing game, but Fernandinho could not squeeze the ball into the far corner from 12 yards after David Silva had pulled the ball back.
Sterling should have put City ahead after the break after being played through in space on the right of the area, the winger choosing to take a touch before going too far wide of the angle.
But the Etihad erupted for all the right reasons moments later as De Bruyne wonderfully curled the ball into the top right corner past Marc-Andre ter Stegen from a 20-yard free-kick.
Sergio Aguero - left on the bench against Barca last month - headed just wide on the hour mark from Silva's cross as City pushed for a third, before De Bruyne curled just wide from inside the area.
Busquets then hit the bar with a left-footed effort which seemed destined for the goal, but City got their two-goal cushion with 16 minutes left.
After being released on the right of the area, Jesus Navas' centre could not be converted by Aguero just three yards out, but the ball fortuitously fell to Gundogan to smash home for his second.
Celtic equalised in Germany just moments later to cap off a memorable night for City, as they held on for the win.