City were competitive in the first half, but made far too many errors against a ruthless Barcelona revelling in Messi’s return from injury.
A Fernandinho slip inside his own box put Messi clear for his first, then Kevin de Bruyne lost possession allowing Andres Iniesta to set up the Argentine for a left-footed strike into the bottom corner.
The evening got worse for the visitors when goalkeeper Claudio Bravo was sent off for handling outside the box and minutes later Messi struck again.
Barcelona were also reduced to 10 men in the last 15 minutes as substitute Jeremy Mathieu was shown a second yellow card for a foul on Raheem Sterling, but by then the damage had been done.
Willy Caballero saved a Neymar penalty – but the Brazilian scored from open play minutes later to complete a comprehensive win for the La Liga side.