Born in Dakar, Senegal, Diagne spent his early career in Italy, beginning in 2010 with A.S.D. Brandizzo where he managed 27 goals in 30 appearances. In 2012, Diagne joined A.C. Bra, where he went on to score 23 goals in 29 Serie D matches.
Diagne was signed by manager Antonio Conte for Serie A champions Juventus in July 2013. On 13 September 2013, he was signed on loan by French club Ajaccio to gain further first team experience. Ajaccio were then managed by Italian manager Fabrizio Ravanelli.
Diagne was loaned out to Belgian club Lierse in January 2014, and made his debut on 31 January against Anderlecht, scoring in the 25th minute. He scored a hat-trick against Mons on 8 February in his next game for the club, ending with 7 goals in 11 games for the club.
On 2 August 2014, Al Shabab Saudi Arabian King Cup 2014 winner announced signing Diagne on loan until June 2015. Diagne made his first debut against Al Nassr FC on 7 August 2014 at Saudi Super Cup as substitute and played the last 17 minutes of the second half and 30 minutes of extra-time. He wasted his penalty shootout chance to achieve triumph over their rivals, but eventually his team won the cup.
Westerlo loan
On 5 January 2015, he joined KVC Westerlo on loan in the Belgium Pro League. He scored 3 goals in 11 games for the club.
Újpest loan
He joined Hungarian side Újpest FC on loan, he scored 11 goals in his first 10 games for the club, scoring in every single one of the games. On 24 October 2015 he created a much-publicized controversy, when 39-year old club legend Péter Kabát wanted to take a penalty which he earned, but Diagne tucked the ball under his shirt and eventually converted the kick himself. In fact neither Kabát nor Diagne but Balázs Balogh was the designated penalty taker.
After impressing on loan at Újpest, on 6 February 2016, Diagne transferred to Chinese Super League side Tianjin TEDA from Juventus on a permanent transfer, signing a two-year deal. He scored 16 goals in 44 league matches during his time at the club.
On 17 January 2018, Diagne joined Turkish Süper Lig side Kasımpaşa from Tianjin TEDA. He made his debut for the club two days later, coming on as a substitute in the 85th minute, and scoring the winning goal in a 3–2 victory over Alanyaspor. On 12 May 2018, Diagne scored his first hat-trick for the club in a 3–1 win over Gençlerbirliği. During his first season in Istanbul, he played 17 games and scored 12 goals. On 23 September 2018, with a goal in a 1–2 defeat to Alanyaspor, Diagne set the record of scoring 8 goals in his first 6 matches in the Süper Lig since the start of the season. He scored a brace in a 2–2 draw with Fenerbahçe. On 22 December, Diagne scored another two goals in a 4–1 win over Beşiktaş, but was suspended for one league game due to receiving his fourth yellow card. In the next fixture he received a red card in Turkish Cup against Alanyaspor due to spitting on his opponent and he was banned for an additional 4 matches, attracting interest from clubs like Leeds United.
Galatasaray
On 31 January 2019, Galatasaray announced the signing of Diagne for a transfer fee of €10 million, signing a contract until 2023. He made his debut for the club on 10 February 2019, in a match against Trabzonspor, scoring the opening goal from penalty in a 3–1 win.
In March 2018, Diagne revealed that he left Chinese side Tianjin TEDA for Kasımpaşa to further his chances of playing for Senegal national team and further his chances of impressing to gain a place in the 2018 FIFA World Cup squad. On 17 May 2018, Diagne missed out on the World Cup squad after being overlooked by manager Aliou Cissé. On 9 September 2018, Diagne made his debut for Senegal in a 2–2 draw against Madagascar in a 2019 Africa Cup of Nations qualifier, coming on in the last minute as a substitute for Moussa Konaté.