Born in Lešak, Miletić started playing football with Bane before moving to Sloga Kraljevo as a teenager.[1] He made his first-team debut in the second half of the 2009–10 Serbian First League, appearing in two games as a substitute, as the club suffered relegation. In the following season, Miletić helped them win the Serbian League West and earn promotion back to the First League. He subsequently established himself as a first-team regular, making close to 100 appearances over the next three seasons (2011–2014).
Borac Čačak
After a trial with Vojvodina that ended without a contract, Miletić signed with Serbian SuperLiga side Borac Čačak in July 2014. He played mainly as a backup in his debut season, making 16 league appearances and helping the club narrowly avoid relegation. In the following season, Miletić became a first-team regular under manager Nenad Lalatović, helping them to a best-ever start to a league season by placing second after the initial 17 rounds. He, however, sued the club over unpaid wages in late November 2015, alongside few other teammates.[2] They subsequently eliminated league leaders Red Star Belgrade in the Serbian Cup round of 16 with a historic 5–1 away win.[3] In January 2016, Miletić forgave a portion of the debt owed to him and left for Vojvodina.[4]
Vojvodina
In January 2016, Miletić signed with fellow SuperLiga club Vojvodina until June 2018.[5] He rejoined former manager Lalatović, alongside Dušan Jovančić. Miletić played regularly for the remainder of the season, scoring once in 16 league appearances.[6]
Westerlo
After featuring regularly for Vojvodina in the opening two months of the season, Miletić was transferred to Belgian club Westerlo in late August 2016.[7] He signed a two-year contract with an option for another year. Throughout the 2016–17 Belgian First Division A, Miletić made 20 appearances but failed to help Westerlo avoid relegation.[6]
Partizan
2017–18 season
In late June 2017, Miletić returned to Serbia and joined Partizan from Westerlo for a transfer fee of €350,000.[8] He signed a three-year contract with the club and chose to wear the number 73 shirt.[9] Miletić made his official debut for Partizan on 22 July, playing the full 90 minutes in the league's opener versus Mačva Šabac and contributing to a 6–1 success at home. He scored his first goal for the club in the Serbian Cup quarter-finals against Javor Ivanjica on 14 March 2018, helping his team to a 2–0 away win, which enabled them to advance to the semi-finals.[10] Partizan would go on to win the competition, beating Mladost Lučani 2–1 in the final.
Miletić finished his debut season as the team's second-most capped player with 50 appearances across all competitions, helping Partizan advance to the UEFA Europa League knockout stage after 13 years. He was also named in the league's best eleven due to his consistent performances in the process.[11]
2018–19 season
On 2 August 2018, Miletić scored his first goal in UEFA competitions, equalizing against Lithuanian club Trakai in a 1–1 away draw in the second leg of the Europa League second qualifying round.[12] He also netted the equalizer to set the score at 1–1 in an eventual 3–2 home win over Danish side Nordsjælland two weeks later in the return leg of the third qualifying round.[13] On 30 September, Miletić scored his first league goal for Partizan, netting a late equalizer to make it 2–2 away at Radnički Niš.[14]
On 29 August 2019, Miletić played his 100th official game for Partizan. His 80th-minute equalizer against Molde FK helped Partizan reach the group stage of UEFA Europa League for the ninth time.[16]