Jego pierwszym klubem była CD Cobreloa. W 2005, mając 17 lat, został członkiem pierwszego zespołu. Jego talent obserwowali wysłannicy włoskiego Udinese Calcio, które w maju 2006 kupiło go za kwotę 3 milionów dolarów. Przed rozpoczęciem sezonu we Włoszech został jednak wypożyczony do CSD Colo-Colo. Rok później trafił na wypożyczenie do argentyńskiego River Plate.
W sezonie 2010/2011 stał się kluczowym zawodnikiem Udinese, które zakończyło sezon na czwartym miejscu w Serie A.
W lipcu 2011 został piłkarzem Barcelony. Kwota transferu wyniosła 37,5 miliona euro (26 milionów + 11,5 zmiennych). W Barcelonie występował z numerem 9, który otrzymał po odejściu Bojana Krkicia do AS Roma[1].
W barwach londyńskiego klubu zadebiutował 2 sierpnia 2014 w meczu w ramach Emirates Cup przeciwko SL Benfica. Pierwszą bramkę zdobył w meczu eliminacji Ligi Mistrzów przeciwko tureckiemu Besiktasowi.
29 sierpnia 2019 udał się na roczne wypożyczenie do Interu Mediolan.
6 sierpnia 2020 definitywnie przeszedł do Interu Mediolan na zasadzie wolnego transferu, podpisując kontrakt na trzy lata[3]. 14 września zadebiutował w barwach Interu, rozgrywając mecz przeciwko Udinese (1:0). Pierwsza dwa trafienia zanotował dwa tygodnie później, strzelając w wygranym 3:1 starciu z Sampdorią[4].
9 sierpnia 2022 przeszedł do Olympique Marsylia, z którym podpisał dwuletni kontrakt, z opcją przedłużenia o kolejne lata[5]. We francuskim klubie zadebiutował 14 sierpnia w zremisowanym 1:1 meczu Ligue 1 z Brest[6]. 28 sierpnia w wygranym 3:0 meczu 4. kolejki przeciwko Nice, strzelił swoje pierwsze dwie bramki w Ligue 1[7]. 11 lutego 2023 skompletował dublet w wygranym 2:0 meczu Ligue 1 z Clermont Foot 63[8]. Dublet zanotował również 19 marca w meczu z Stade de Reims (2:1)[9].