È cresciuto nel Barcellona, dove ha giocato per dodici stagioni durante le quali ha vinto sei campionati spagnoli, sei Supercoppe spagnole, due Coppe del Re, tre UEFA Champions League, due Supercoppe UEFA e due Coppe del mondo per club FIFA. Nel 2015 si è trasferito al Manchester United prima di passare in prestito allo Standard Liegi, con il quale ha vinto una Coppa del Belgio. Dal 2016 al 2017 ha militato nel Middlesbrough. Con la nazionale spagnola ha conquistato il Mondiale nel 2010 e l'Europeo nel 2012.