Bacca debuteerde in 2002 in het betaald voetbal bijAtlético Junior. Om hem ervaring te laten opdoen, leende de club hem meteen uit aan tweedeklasser Barranquilla. Vervolgens belandde hij bij hetVenezolaanse Minervén FC, waarmee hij een van detopscorers in de tweede divisie werd. De club promoveerde, maar Bacca keerde terug naar Barranquilla. Ook bij die club werd hij topschutter. In 2009 maakte Atlético Junior een einde aan de uitleenbeurten. Bacca haalde met Junior de halve finale van deCopa Colombia en veroverde een jaar later de titel. Hij werd ook topschutter met twaalf doelpunten.
Bacca tekende in januari 2012 een contract bijClub Brugge, dat twee miljoen euro voor hem betaalde.[1] In januari 2013 verlengde hij zijn contract bij Club Brugge. Hij werd dat seizoen topschutter in de Belgische competitie enProfvoetballer van het Jaar.
In de zomer van 2013 verkaste Bacca naarSevilla FC. Met die club won hij in zowel2013/14 als2014/15 deUEFA Europa League. Op 14 mei 2014 wasSL Benfica de tegenstander in de finale. Nadat het 120 minuten 0–0 bleef, won Sevilla de beslissende strafschoppenreeks met 4-2. Bacca benutte daarbij de eerste penalty voor zijn team. Sevilla prolongeerde de Europa League-titel een jaar later door ditmaalDnipro Dnipropetrovsk te kloppen in de finale. De Spaanse club won met 3–2, waarbij Bacca zowel het tweede als het winnende doelpunt voor zijn team maakte.
In juli 2015 verruilde BaccaSevilla voorAC Milan, dat circa €30.000.000,- voor hem betaalde. Hij tekende een contract tot medio 2019. Bacca maakte op 17 augustus 2015 zijn officiële debuut voor Milan. Hij begon die dag in de basis tijdens een met 2-0 gewonnen wedstrijd in het toernooi om deCoppa Italia, thuis tegenPerugia. Zijn eerste doelpunt volgde twaalf dagen later. Hij maakte toen na zestien minuten 1-0 in een met 2-1 gewonnen wedstrijd thuis tegenEmpoli, in deSerie A. Op 21 augustus maakte Bacca in een wedstrijd tegenTorino zijn eerstehattrick in dienst van de Milanezen.
Bacca maakte zijn debuut in hetColombiaans voetbalelftal op 12 augustus 2010 in eenvriendschappelijke wedstrijd tegenBolivia. Hij begon in de basis en maakte na 37 minuten direct zijn eerste interlanddoelpunt.[2] In mei 2014 werd Bacca door bondscoachJosé Pékerman opgenomen in deselectie voor hetwereldkampioenschap inBrazilië.[3] Op het toernooi speelde hij alleen in de met 2-1 van Brazilië verloren kwartfinale mee. In 2015 nam Bacca met Colombia deel aan deCopa América 2015; in het groepsduel tegen het Braziliaans elftal op 17 juni werd hij door de arbiter na afloop van de wedstrijd met eenrode kaart weggestuurd na geruzie metNeymar, waardoor hij de volgende wedstrijd moest missen. Bacca maakte in 2018 eveneens deel uit van de Colombiaanse selectie op hetWK 2018 inRusland. De Colombianen werden hierop in de achtste finales nastrafschoppen uitgeschakeld doorEngeland. Hij kwam in drie van de vier duels in actie voor Colombia, alle als invaller.