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.
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 was moved to Tottenham Hotspur in 2008.
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. 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. Badelj continued with impressive performances in the 2010–11 season as well, even wearing the captain's armband in some matches.
In the 2011–12 season, Badelj was one of the key players in the Dinamo squad that reached the 2011–12 UEFA Champions League group stage for the first time in 12 years. He appeared in all six of Dinamo's group stage games against Real Madrid, Lyon and Ajax.
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.
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. He made his domestic debut soon after joining the club in a match against Werder Bremen. He soon established himself as the first-team regular starter, typically situated as a deep-lying playmaker. Badelj scored his first Bundesliga goal against Schalke 04 in November 2012.
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.
Badelj earned 63 caps during his time in the Croatian youth ranks, nine of which came in the UEFA European Under-21 Championship, where he was very impressive.
Badelj was initially often called up to the senior Croatia team but usually remained on the substitutes' bench. He made his competitive debut in a UEFA Euro 2012 qualifier against Malta in which he scored a goal. He was named to the Croatia squad for Euro 2012, though he did not make an appearance. Badelj was also a member for the Croatia squad for the 2014 FIFA World Cup, being selected after Ivan Močinić's injury, though again he remained an unused substitute in the tournament.As of 20 May 2016
As of 5 September 2016
Scores and results list Croatia's goal tally first.
Croatian First League: 2008–09, 2009–10, 2010–11, 2011–12
Croatian Cup: 2008–09, 2010–11, 2011–12
Croatian Super Cup: 2010
Croatian Football Hope of the Year: 2009