Litex Lovech Born in
Levski, Pleven Province, Milanov began playing football at the local club, before joined the
Litex Lovech Academy, together with his twin brother
Iliya, in 2005. He was part of a group of young players at the club who guided the club to win the Bulgarian U-17 Championship in June 2009, with Milanov scoring in the final against
Levski Sofia. On 1 August 2009, Milanov made his first team debut, at 17 years 152 days, coming off the bench in the
2009 Bulgarian Supercup against
Levski Sofia, which ended in a 1–0 defeat at
Vasil Levski National Stadium. A week later, he made his league debut against
Lokomotiv Mezdra, scoring the opening goal in a 5–0 victory. On 3 December, he scored his first ever
Bulgarian Cup goal, in a 4–0 win over
Pirin Gotse Delchev which sent them through to the 1/8 finals. Milanov play regularly in his first season, making 31 appearances in all competitions and collected his first
A PFG title winner's medal at the end of the
2009–10 season. On 14 August 2010, in a 2–1 home victory over
Pirin Blagoevgrad, Milanov netted his first goal of
2010–11 season. He ended his second season with 5 goals in 36 appearances in all competitions. Milanov helped Litex retain the A PFG title by a 3-point margin after being pushed by
Levski Sofia for much of the season. In
2011–12 season, Milanov scored 6 goals in 25 league matches. On 24 May 2012, he was credited with the ABF
A PFG Young Player of the Season award, by the professional footballers association of Bulgaria. On 19 August 2012, Milanov scored his first goal of
2012–13 season in a 1–1 away draw against
Lokomotiv Plovdiv. On 27 October, he scored his first ever hat-trick in the
A PFG, against
Montana, in a 3–1 victory at
Ogosta Stadium; he scored from a penalty kick and a two free-kicks. On 27 December 2012, he became the youngest ever recipient of the
Bulgarian Footballer of the Year award. On 30 March 2013, as a result of injuries to regular captains
Nebojša Jelenković and
Nikolay Bodurov, Milanov captained Litex for the first time against
Botev Vratsa in a 5–1 home win. On 14 April, he played his 100th match for Litex in the league in a 2–1 away loss against
Slavia Sofia.
CSKA Moscow On 5 July 2013, Milanov signed with
Russian Premier League side
CSKA Moscow on a five-year deal for an initial fee of 5,4 million
leva, with a further 2 million leva depending on CSKA appearances in the UEFA competitions in the next two years. He was given the number 23 jersey. He made his official debut on 18 August 2013, in the 1–0 home win over
Kuban Krasnodar in a league match after coming on as a late substitute for
Keisuke Honda. Although having had trouble fitting into the club at start, Milanov is improving at a fast rate according to head coach
Leonid Slutsky, resulting in him becoming a regular starter plus in him receiving playing time in important European matches in the group stages of the
2013–14 UEFA Champions League. He provided his first assist in a 4–1 home win over
Terek Grozny; it was the opening goal of the match netted by teammate
Seydou Doumbia. Milanov scored his first official goal for
CSKA Moscow in a game against
FC Zenit Saint Petersburg on 16 March 2014 – a long range effort that eventually won the game for his team; being the only goal scored in the whole match. His classy goal didn't go unnoticed, as he was voted player of the week for matchday 21 in the
Russian Premier League. For the 2016–17 season, Milanov received the number 8 jersey upon his return from
Grasshopper. He scored his first goal of the season in a 0–1 away win against
FC Ural, saving his team from a 0–0 draw in the last seconds of the game. Upon the expiration of his contract at the end of the 2017–18 season, he left CSKA as a free agent.
Grasshoppers loan On 16 February 2016, CSKA Moscow announced that Milanov had joined
Swiss Super League side
Grasshopper Club Zürich on loan for the remainder of the season.
Fehérvár On 3 September 2018, he joined Hungarian club
Fehérvár FC. He made his debut on 15 September in a 2–1 away loss against
Puskás Akadémia FC. He scored his first goal for the club on 23 September in a 0–2 win against
Cigánd SE, in a match for the
Magyar Kupa. On 8 November 2018, he scored the only goal in a 1–0 home win against
PAOK in a
Europa League match. On 21 July 2020, Milanov left Fehérvár on mutual agreement.
Levski Sofia After more than a year without a club, Milanov joined
Levski Sofia on 29 July 2021, signing a one-year contract with the club.
Dinamo București On 19 January 2024,
Dinamo București announced the signing of Milanov, when the club was in the
Liga I relegation zone. Milanov made his debut for the team on 27 January 2024, in the 1-2 loss against
Rapid București, when he came in as a substitute in the 78th minute to replace
Dennis Politic. On 12 February 2024, he provided an assist for
Darko Velkovski in the 2-0 away win against champions
Farul Constanța and he was selected as man of the match. ==International career==