Ba debuteerde in 2001 bij SM Montrouge in een lagere Franse klasse. In het seizoen 2005/06 brak hij door bij FC Rouen. Bij die club werd hij topscorer in de Franse derde klasse. Excelsior Moeskroen gaf Ba daarop een contract voor drie seizoenen. Hier viel hij na drie speeldagen uit met een beenbreuk. Zes speeldagen voor het einde van de competitie viel voor het eerst weer in. Hij scoorde zes keer in evenveel wedstrijden.
Moeskroen verkocht Ba op 29 augustus 2007 voor drie miljoen euro aan TSG Hoffenheim. Met deze club promoveerde hij in zijn eerste seizoen naar de Bundesliga. In het seizoen 2008/09 speelde hij daar samen met onder anderen Vedad Ibišević en Chinedu Obasi. In januari 2011 drong Ba aan op een vertrek bij Hoffenheim. Hij leek naar Stoke City te vertrekken, maar kwam daar niet door de medische keuring. Op 28 januari 2011 werd bekendgemaakt dat West Ham United de spits overnam van Hoffenheim. Na een half jaar vertrok hij naar Newcastle United, nadat West Ham United was gedegradeerd naar de Championship.[1]
Op 4 januari 2013 raakte bekend dat Chelsea de Senegalees had gekocht voor 10 miljoen euro. Ba kreeg bij zijn nieuwe club rugnummer 29.[2] Bij zijn debuut voor Chelsea in de FA Cup tegen Southampton maakte Ba meteen twee doelpunten. In juli 2014 kocht de Turkse club Beşiktaş JK de Senegalees voor ongeveer 6 miljoen euro. In zijn eerste seizoen scoorde hij 18 competitiedoelpunten en eindigde daarmee op de tweede plek op de topscorerlijst. In juni 2015 vertrok hij voor 3 seizoenen naar China om te gaan spelen voor Shanghai Shenhua.
Ba brak op 17 juli 2016 een kuitbeen spelend voor Shanghai Shenhua.[3] Op 31 januari 2017 maakte het Turkse Beşiktaş JK bekend dat de Senegalees op huurbasis terugkeerde bij de club. De huur werd niet verlengd en in juni keerde Ba terug naar China. Vervolgens keerde hij in januari 2018 terug naar Turkije om te gaan spelen voor Göztepe SK. Na een sterk halfjaar bij deze club besloot hij terug te keren naar China om wederom voor Shanghai Shenhua te gaan spelen. Na een halfjaar besloot hij het contract te laten ontbinden en in januari 2019 tekende de aanvaller bij Istanbul Başakşehir. Hier kende hij succes, zo werd in juli 2020 het Turkse landskampioenschap veroverd en werd hij clubtopscorer in de competitie met 13 goals. In juni 2021 vertrok Ba transfervrij naar het Zwitserse FC Lugano, waar hij voor 1 seizoen tekende. Echter 3 maanden later, in september 2021, kondigde de aanvaller aan per direct te stoppen met profvoetbal.[4]
Bronnen, noten en/of referenties