Manchester City suffered from deja vu as Luis Suarez's double gave Barcelona a 2-1 first leg lead in a Champions League last 16 tie at the Etihad although Lionel Messi's late penalty miss left the door ajar on Tuesday.
Barcelona were too slick for the hosts in a mesmerizing opening period with Uruguay forward Suarez firing them in front in the 16th minute and doubling the lead after half an hour.
Sergio Aguero rewarded City for a vastly improved second half showing with a clinical strike 20 minutes from time.
But with City down to 10 men after Gael Clichy's red card for a second booking, the majestic Messi had the chance to restore Barcelona's two-goal lead but his penalty was saved by Joe Hart and the Argentine headed the rebound wide.
"We are very happy with the result and even if it was 3-1 the tie would still be open," Barca coach Luis Enrique said.
Messi, rejuvenated since his reported spat with manager Luis Enrique at the start of the year, was at the heart of Barca's rapier thrusts.
But it was Suarez, whose goals, bites and misplaced words made his time at Liverpool nothing if not compelling, who returned to cast his spell over English football.
In the 16th minute Messi's ball in hit City skipper Vincent Kompany on the back and dropped at the feet of Suarez to drill a low shot past the stranded Hart.
City's endeavour was rewarded when Aguero, whose hat-trick against Bayern Munich in the group stage helped City mount a great escape into the last 16, clipped a shot past ter Stegen after brilliant work from David Silva.
With Clichy off for a second booking, Messi earned a last-gasp penalty when he was bundled over by Zabaleta but his effort was saved by Hart and the Argentine then missed an open goal with a diving header from the rebound to leave City alive.
Juve overcome Chiellini blunder to edge Dortmund
Juventus overcame a blunder by defender Giorgio Chiellini and a first-half injury to playmaker Andrea Pirlo to beat Borussia Dortmund 2-1 in a fast and furious Champions League tie on Tuesday.
Carlos Tevez tapped in from close range to give the Serie A champions a 13th-minute lead in the last 16 first leg, only for Chiellini's nightmare moment to let Marco Reus in for a clinically-taken equaliser five minutes later.
The Italy defender slipped and fell over as he went to make a simple interception, lost the ball to Reus and did not even try to get up, instead remaining sprawled on the turf as the Borussia player planted the ball past Gianluigi Buffon.
In a passionate atmosphere, Juventus suffered another blow when Pirlo went off injured just after the half hour but a superbly-taken goal by Alvaro Morata just before halftime left the tie on a knife-edge.
In their first meeting since Borussia's 3-1 win in the 1997 Champions League final, both teams pressed relentlessly, forcing each other into numerous mistakes.
Borussia, also affected by a first-half injury to right back Lukasz Piszczek, had more possession without creating many chances while Juventus played an almost counter-attacking game in the second half, despite home advantage.
A team used to enjoying the lion's share of possession were forced to chase the Germans for long periods and play a counter-attacking game in their own stadium.
"This was different from what we normally face," Allegri told reporters. "In the domestic championship, we are used to having the ball for 70 percent of the game.
"We're not used to not having the ball and defending, but in the second half we did both. This match was a step forward for a team that wants to do well in Europe."