Milan Badelj signed for Dinamo Zagreb as a 17-year-old in 2007, just after he was snapped up from the youth system of Dinamo Zagreb's city rival, NK Zagreb. For the 2007–08 season, he was sent on loan to Dinamo Zagreb's affiliate Lokomotiva to gain first–team experience at the senior level. He played in 28 matches and scored seven goals for Lokomotiva in the Croatian Third League.
Dinamo Zagreb
At an early age, Badelj was already spotted as a possible replacement for Luka Modrić, a key figure in the Dinamo Zagreb first-team squad that joined Tottenham Hotspur in 2008.[4]
In 2008, Badelj joined the first team and immediately established himself as an important player. He made his senior debut for Dinamo in Champions League qualifier against Northern Irish club Linfield. He then made his domestic debut in the opening match of the 2008–09 season against Rijeka, scoring the first goal in 2–0 victory.[5] He finished his first season with Dinamo with 31 domestic appearances and 12 UEFA Cup appearances.
Badelj continued to impress at his young age, establishing himself as a first–team regular for the 2009–10 season. In March 2011, he scored a goal in a 2–0 victory in the derby match against great rivals Hajduk Split.[6] Badelj continued with impressive performances in the 2010–11 season as well, even wearing the captain's armband in some matches.[7][8]
In what would be his final game at the Stadion Maksimir for Dinamo, in a Champions League playoff match against Slovenian side Maribor, Badelj scored an own goal that gave the opposition an equaliser in the first leg match. However, Badelj later scored the winning goal at the other end in the second half.[10]
Hamburger SV
Badelj joined Hamburger SV of the Bundesliga in August 2012 for an undisclosed fee thought to be in the region of €4.5 million, according to the Croatian media.[11] He made his domestic debut soon after joining the club in a match against Werder Bremen. He soon established himself as a first-team regular, typically operating as a deep-lying playmaker.[12] Badelj scored his first Bundesliga goal against Schalke 04, in a 3–1 win, on 27 November 2012.[13]
Fiorentina
On 31 August 2014, it was announced Badelj had signed for Serie A side Fiorentina for a fee believed to be in the region of €5 million.[14] In 2018, after the tragic death of Davide Astori (who had unexpectedly died in the night between March 3 and March 4 due to a cardiac arrest), he was appointed as team captain.
Lazio
Badelj joined Lazio on 1 August 2018, on a free transfer.[15] On 17 February 2019, he scored his first goal for the club in a 2–1 loss to Genoa.
Loan to Fiorentina
On 5 August 2019, Badelj joined Fiorentina on loan until 30 June 2020 with an option to buy.[16] On 3 September 2019 he wore captain armband in 1–1 draw against Parma, despite being a loaned player, due to absence of regular captain Germán Pezzella. It was the first time for Badelj to being captain since his comeback. Fiorentina chose not to activate the option and Badelj returned to Lazio at the end of the spell.
Genoa
On 16 September 2020, Badelj signed a three-year contract with Genoa.[17]
On February 20, 2021, he scored his first goal for the club, as he equalized at the last minute of a match against Hellas Verona: in that occasion, he celebrated by recreating the number 13 with his fingers pointed to the sky, as a way to pay tribute to his late friend and former team-mate Davide Astori (in fact, the Italian defender had used to wear the number 13 shirt until his tragic death).[18]
International career
During his youth career for the national team, Badelj earned a total of 63 caps, for all youth teams from U16 to U21.
In 2010, Badelj was selected for the Croatia national team squad for the first time, but was mostly on the bench. His competitive debut came during a UEFA Euro 2012 qualifying match against Malta; a match Croatia won 3–1, on 2 September 2011, in which Badelj scored the second goal.[19] He was selected for the UEFA Euro 2012 squad;[20] and in May 2014, was selected for the final squad at the 2014 FIFA World Cup in Brazil following an injury to Ivan Močinić.[21] However, he was an unused substitute for most of the tournament, as Croatia were knocked out in the group stage. He was selected for UEFA Euro 2016.[22]
In May 2018, Badelj was selected for the final 23-man squad for the 2018 FIFA World Cup in Russia.[23] He scored his first goal of the tournament in a 2–1 win over Iceland; helping Croatia en route to topping the group on maximum points.[24][25] On 1 July, in Croatia's round of sixteen tie with Denmark, the game was drawn 1–1 and was decided through a penalty shootout in which Badelj missed Croatia's first penalty, though they would scored three while their opponents only scored two.[26]