Messi broke the deadlock from the spot in the 54th minute after he was fouled by City defender Martin Demichelis – who was also sent off for a challenge that was initially made outside the penalty area.
And despite a defiant response from Manuel Pellegrini’s side, without the presence of Sergio Aguero, City’s threat was limited.
Swedish official Jonas Eriksson pointed to the spot, even though City had a case that first contact was outside the area, then made matters worse by sending Demichelis off before Messi stroked in the penalty.
It led to an instant reshuffle by Pellegrini, who sent on Joleon Lescott and Samir Nasri for Navas and Aleksandar Kolarov in a bid to ensure there was no further damage as a result of City’s numerical disadvantage.
Barca, though, were enjoying the sudden change in circumstances and Alves should have hit the target when he found space in the area, only to shoot wide of the far post from an angle.
Both sides made changes with 17 minutes left, Edin Dzeko coming on for Negredo while Brazil superstar Neymar, returning from injury, replaced Alexis Sanchez for Barcelona.
City were still battling and Valdes was forced into a sharp save from David Silva’s volley following fine approach work from Yaya Toure and Pablo Zabaleta.
If City could have restricted Barcelona to a one-goal lead they would have travelled to the Nou Camp with some hope – but Alves has surely put the Catalans into the last eight.