Arsenal will return to Bayern, their conquerors at the knockout stage last season, and José Mourinho's wish for a Didier Drogba reunion will come to fruition when Galatasaray face Chelsea.
Premier League champions Manchester United, meanwhile, will play Olympiakos.
Elsewhere, Real Madrid will take on Schalke, a flagging AC Milan will play a resurgent Atlético Madrid, Paris Saint-Germain drew Bayer Leverkusen and Borussia Dortmund will trek to Russia to compete with Zenit St Petersburg.
City have never faced Barcelona in European competition but did face the Blaugrana in a 2009 friendly at Camp Nou, which they won 1-0.
Arsenal were ejected from the Champions League at the last 16 stage by Bayern in 2005, as well as last year.
Chelsea have never played Galatasaray, either, but United, who arguably have the easiest tie, faced Olympiakos four times over two consecutive seasons in the early 2000s, winning all four games.
FULL CHAMPIONS LEAGUE DRAW
Manchester City vs Barcelona
Olympiakos vs Manchester United
AC Milan vs Atlético Madrid
Bayer Leverkusen vs Paris Saint-Germain
Galatasaray vs Chelsea
Schalke vs Real Madrid
Zenit St Petersburg vs Borussia Dortmund
Arsenal vs Bayern Munich