Pep Guardiola's side cut out the mistakes and made Barcelona pay for theirs at the Etihad
After being handed a 4-0 drubbing on their visit to the Catalan capital two weeks ago, Manchester City looked a different side on Tuesday night in front of their home crowd.
The opening period of the game saw both sides attempting to feel each other out, and was broken up by a number of fouls that gave the contest a somewhat scrappy edge.
However, with just 20 minutes on the clock, Lionel Messi and Neymar combined on a textbook counter attack to put Luis Enrique's side into the lead, and it looked as though it may well be the same story all over again for Pep Guardiola and his Manchester City side.
From that point, Barcelona began to apply pressure, turning the screw and pinning the home side in their own half. They had to make do with booting the ball clear when they got the chance, simply to catch their breath and try to get the shape back in their side.
However, when it looked as though they might be overrun, a fantastic piece of pressing in the Barcelona half forced a rare error from a patchwork backline for Barcelona, who were without Aleix Vidal, Gerard Pique and Jordi Alba.
Sergio Aguero latched on to a loose ball, slid it across to Raheem Sterling who found Ilkay Gundogan at the back post, and he stroked it home to restore parity for the home side.
That sparked life into the entire team, who looked to have a renewed sense of belief that Barcelona were vulnerable under pressure, even if they were still dangerous in attack.
Image: Pep Guardiola practices his mime act. Rui Vieira AP/Press Association Images
After the break, City took the lead in style, as Kevin de Bruyne, who was involved in almost everything that his team did well, scored the goal of the night from a free kick just outside the box. Silva controlled a pass, and like a moth to a flame he drew a foul from Sergio Busquets. The Belgian international stepped up to hit an unstoppable shot into the top corner beyond Ter Stegen, and bring the Etihad to its feet.
The third came courtesy of Gundogan again after another inviting ball across the box hit Aguero on the torso, much to the chagrin of the Barcelona players in the immediate area who appealed for handball. While they may have had a case, the German international wasn't waiting around for another invitation and slammed the ball into the back of the net.
There were worrying moments still, including a Barcelona break that was set up by a misplaced pass back into the Manchester City half, accidentally playing Luis Suarez through. However, the defence held firm and Willy Caballero was up to the challenge when called into action.
Guardiola's side could have had added a few more themselves too, in particular De Bruyne, who was inches from connecting with a beautiful ball across the box from Kolarov, and hit another shot from distance just wide of Ter Stegen's left post.
However, their three goals proved to be enough as they put an emphatic end to their losing streak, with two wins on the bounce and seven goals in the space of 180 minutes.
Elsewhere in the Champions League, Celtic secured an important draw away to Borussia Monchengladbach, while PSV's loss at home to Bayern Munich means the Dutch side are stranded at the bottom of their group.
Antoine Griezmann rescued Atletico Madrid with two goals, one in stoppage time, to give his side a narrow win over Rostov and top of Group D.
Arsenal also left it late to pull out a win against Ludogorets, as Mesut Ozil completed a comeback in the 88th minute that saw them claim a 3-2 victory over the home side. Goals from Granit Xhaka and Olivier Giroud canceled out the two goal lead they had given their hosts in the first half.