Petrović began playing football at his hometown club Jedinstvo Ub (where he gained the nickname Raća) and he played there for all youth ranks of the club, before making his senior debut during the 2006–07 season. After only a year of senior football for Jedinstvo, he moved to Radnički Obrenovac.
Partizan
2008–09 season
On 20 June 2008, Petrović completed a move to Partizan from Radnički Obrenovac. He signed a five-year contract and was given the number 20 shirt for Partizan.[2] Petrović made his official debut for the club in a UEFA Champions League qualifier against Inter Baku on 6 August 2008, a game which Partizan won 2–0. On 21 May 2009, he scored his first goal for Partizan in a 3–0 Serbian Cup final match win over Sevojno. He also scored against Čukarički Stankom in the final Serbian SuperLiga game of the season.
2009–10 season
After the departure of Juca to Deportivo La Coruña, Petrović was given the number 8 shirt. He featured in total of 24 league matches and scored 7 goals in Partizan's title-winning campaign. His most notable moment of the season was a fantastic goal for a 1–0 win against cross-town rivals Crvena zvezda.[3] He was also named in the 2009–10 Serbian SuperLiga Team of the Year.
2010–11 season
On 10 April 2011, Petrović made his 100th competitive match for Partizan and marked his jubilee with a goal from the penalty kick against Spartak Subotica. He was named in the Serbian SuperLiga Team of the Year for the second season in a row.
On 30 June 2011, SBV Vitesse announced on their official website that Petrović was on the way to move to the Netherlands.[4] On the same day, Partizan confirmed the transfer with statement that Petrović would sign a five-year contract.[5] However, few days later appeared information that the transfer failed due to problems with the amount of compensation to the player's agent.[6]
Blackburn Rovers
On 24 July 2011, Serbian media revealed possible interest in Petrović from English Premier League (at the time) team Blackburn Rovers.[7] The following day it was confirmed by Partizan that Rovers had bid for the young Serbian midfielder.[8] It was later confirmed by Partizan that Petrović had been left behind from the club travelling to a pre-season tour ready for travelling to England to discuss personal terms when an offer was accepted.[9] On 27 July it was reported that a fee had been agreed between Partizan and Rovers.[10] On 26 July it was revealed that Petrović had arrived in England to undertake a medical.[11] On 9 August 2011, a work permit was obtained and Petrović officially joined Blackburn Rovers.[12] Petrović's full home-debut for the club was against Sheffield Wednesday on 24 August 2011 in the League Cup second round, in a game which Rovers won 3–1.[13]
Gençlerbirliği
On 22 August 2012, Petrović signed for Turkish club Gençlerbirliği for an undisclosed fee.[14]
Dynamo Kyiv
On 26 May 2015, Petrović signed a 5-year contract with the Ukrainian champions Dynamo Kyiv, joining them as a free agent. On 19 July 2015, Petrović made his first official debut for Dynamo in a 2–1 win against FC Stal in the Ukrainian Premier League. On 4 December 2015, Petrović scored his first goal for Dynamo in a 0–6 win against Metalurh Zaporizhzhia in the Ukrainian Premier League.
Sporting CP
On 14 June 2016, Petrović signed a 4-year contract with Portuguese club Sporting CP. He was loaned to Rio Ave the following year and played 13 games for them. Petrović finally made his league debut for Sporting as a second half substitute in a 2–1 win over Estoril.
On 15 May 2018, Petrović and several of his teammates, including coaches, were injured following an attack by around 50 supporters of Sporting at the club's training ground after the team finished third in the league and missed out on the UEFA Champions League qualification.[15][16] Despite the events, he and the rest of the team agreed to play in the Portuguese Cup final scheduled for the following weekend,[17] eventually losing to C.D. Aves.
Almería
On 19 August 2019, Petrović signed a three-year deal with Segunda División side UD Almería.[18] He was a regular starter for the club as they missed out promotion in the play-offs twice.
On 10 August 2021, Petrović terminated his contract with the Andalusians.[19]
Zaragoza
Hours after leaving Almería, Petrović signed a two-year contract with Real Zaragoza also in the Spanish second division.[20] On 31 January 2023, he terminated his contract with the club.[21]
On 1 June 2010, Petrović was named in the final 23-man squad for the 2010 FIFA World Cup,[22] where he appeared in group stage victory against Germany.