Gaćinović was born in Novi Sad while his father Vladimir played for FK Bečej.[1][2] His family is from Trebinje in Bosnia and Herzegovina, where Gaćinović returned when his father finished his career. He started to play football at Leotar, before joining the youth academy of Vojvodina. He made his first team debut under manager Nebojša Vignjević on 19 March 2013, coming off the bench as a substitute for Miroslav Vulićević in a 3–0 home win over Donji Srem. On 18 May 2013, Gaćinović scored his first senior goal in a 3–2 home league victory over Radnički Niš.
After already establishing his place in the starting lineup, Gaćinović helped Vojvodina win the 2013–14 Serbian Cup in the club's centennial year. He was named the team's captain in early 2015, eventually becoming their top league scorer in the 2014–15 season, netting 11 goals.
Eintracht Frankfurt
In the summer of 2015, Gaćinović moved to Germany and signed with Eintracht Frankfurt. He made his official debut for the club on 28 November 2015, playing the full 90 minutes in a 1–2 away league loss against Mainz 05. On 19 May 2016, Gaćinović scored the equalizer in the first leg of the 2015–16 Bundesliga relegation playoffs against Nürnberg, before assisting the only goal in the return leg away to keep his club in the top flight.[3]
TSG Hoffenheim
On 4 August 2020, Gaćinović signed for TSG Hoffenheim as part of a swap deal, with Steven Zuber going to Frankfurt. He put pen to paper on a 4-year contract.[4]
Loan to Panathinaikos
On 31 January 2022, in the last day of winter transfer window, Panathinaikos completed the loan signing of Gaćinović, until the summer of 2022.[5]
AEK Athens
On 28 June 2022, Gaćinović signed a 4-year contract with AEK Athens.[6] The Greek club paid an estimated fee of €1,000,000, while TSG Hoffenheim will keep a resale rate of 30%.[7]
In the first half of the 2022–23 season, Gaćinović emerged as a leading figure in Matías Almeyda's plans, scoring 4 goals and assisting another four. Following his return in action after the World Cup break and an injury, serbian sources confirmed that Stuttgart expressed interest in his services with an initial 6-month loan and an option to buy for the summer, with AEK Athens denying any negotiation, unless potential offers exceed the sum of €8,000,000.[8] He scored on the last game of the season against Volos in a 4–0 home victory which helped AEK win the title.
He debuted for the senior national team on 24 March 2017 against Georgia, replacing Filip Kostić in the 81st minute, and scored the third goal for Serbia in the 86th minute. In May 2018 he was named in Serbia’s preliminary squad for the 2018 FIFA World Cup in Russia, but he wasn't selected for the final squad.[12]
Gaćinović was selected in Serbia's squad for the UEFA Euro 2024. He played in a group stage match against Slovenia. Serbia finished fourth in the group.