Schildenfeld began playing football at his hometown club HNK Šibenik. The club's then manager Stanko Mršić gave him his senior debut at age 16 against Kamen Ingrad. In the 2005–06 season, Schildenfeld helped Šibenik win promotion to the top flight.
Midway through his first season in the Croatian first division, the country's top clubs Dinamo Zagreb and Hajduk Split became interested in signing Schildenfeld and his Šibenik teammate Ante Rukavina. It first seemed likely that Schildenfeld and Rukavina would move to Hajduk together, but then Dinamo entered the race for the two players. In the end, on 2 January 2007, Schildenfeld moved to Dinamo while Rukavina joined archrivals Hajduk. Despite only having five months of top-flight experience at the time, Schildenfeld quickly managed to establish himself as a regular at Dinamo and helped the club winning both Croatian league and cup titles, also netting the crucial away goal against Slaven Belupo in the second leg of the cup final.
In the first part of the 2007–08 season, Schildenfeld was also one of the regulars in Dinamo's UEFA Champions League and UEFA Cup campaign, appearing in five Champions League qualifying matches and four UEFA Cup matches before the club was knocked out of the latter competition in the group stage. Schildenfeld became an unlucky figure in Dinamo's 2–1 defeat at Norwegian side Brann in their second match in the UEFA Cup group stage, causing a penalty and being sent off for a professional foul in the final moments of the first half. He missed the last two group matches, against Hamburger SV and Rennes, because of the red card.
Although he was initially set to stay at Dinamo Zagreb, Schildenfeld was signed by Turkish top club Beşiktaş under unexpected circumstances on 1 February 2008. Beşiktaş were actually ready to sign Schildenfeld's teammate Dino Drpić, but the deal fell through due to Drpić's behaviour after a Croatian league match between Dinamo and Hajduk Split almost two years earlier.
Schildenfeld made his Süper Lig debut on 9 February 2008, coming on as a late substitute in Beşiktaş's 2–0 defeat at Kayserispor. He played his first full Süper Lig match a week later as Beşiktaş beat Ankaraspor 3–2 at home.
In September 2008, Schildenfeld joined MSV Duisburg of the German 2. Bundesliga on loan until the end of the season. He made his league debut for the club on 16 November 2008 in a 4–3 defeat at SpVgg Greuther Fürth, entering as a substitute for Olcay Şahan in the 83rd minute. He made just four appearances for the club in the league, all of them as a substitute.
In July 2009, Schildenfeld joined Sturm Graz of the Austrian Bundesliga on a season-long loan from Beşiktaş. He made his league debut for the club on 26 July 2009 in a 3–0 win at home to Magna Wiener Neustadt, entering as a substitute for Ferdinand Feldhofer in the 89th minute. He later managed to find his place as a regular at the club, appearing in 34 league matches during the season. His only goal in the league during the season came on 27 March 2010 when he netted the opening goal in a 3–0 win at Kapfenberger SV.
During his first season with Sturm Graz, he also made ten appearances for the club in the UEFA Europa League and was also a regular feature in their run to the Austrian Cup title, making six appearances in the competition. On 15 August 2009, he netted a brace against TSV St. Johann in the Austrian Cup, helping Sturm to grab a 4–2 extra-time win in the first-round match. He also completed the full 90 minutes in the Cup final on 16 May 2010, which Sturm won 1–0 against Magna Wiener Neustadt. On 8 June 2010, he signed a three-year contract with Sturm Graz.
On 7 July 2011, Schildenfeld returned to the 2. Bundesliga to join Eintracht Frankfurt. He played there in his first season 33 out of 34 possible matches, helping the club earn promotion to the top-flight Bundesliga. He scored one goal during the 2011–12 campaign.
On 11 July 2012, Schildenfeld signed a three-year contract with Russian Premier League side Dynamo Moscow for an undisclosed fee.
After struggling to become regular starting center back in Dynamo, Schildenfeld moved on loan to Superleague Greece side PAOK.
On 2 August 2013, Schildenfeld went on a loan to Panathinaikos.
In the summer of 2015, Schilden returned to Dinamo Zagreb.
On 1 March 2006, Schildenfeld won his only international cap for the Croatia national under-21 team, coming on as a substitute in a friendly match against Denmark.
Schildenfeld went on to make his full international debut for Croatia on 14 November 2009, coming on as a substitute for Darijo Srna in the 58th minute of a friendly match against Liechtenstein in Vinkovci.
In 2010, he made a total of six international appearances, of which four were in friendlies. His competitive international debut came on 9 October 2010 in a UEFA Euro 2012 qualifier at Israel, in which he played the full 90 minutes. In November 2011, he played the full 90 minutes in both play-off matches against Turkey, helping Croatia to qualify for the finals after a 3–0 aggregate win. He went on to play in all three Croatian matches at Euro 2012.
Ten days after his 30th birthday, on 28 March 2015 coming in as a second-half substitute for midfielder Ivan Rakitić in a UEFA Euro 2016 qualification match against Norway, Schildenfeld scored his first goal for the national side with a header off of a Darijo Srna corner kick to make the score 4–1 in the 87th minute. Croatia went on to win the match 5–1.
After Euro 2016 finished, he had not received any further call ups for the national team.Scores and results list Croatia's goal tally first.
Schildenfeld's family on his father's side is originally from Slovenia and is of Austrian origin.Druga HNL (South): 2005-06
Prva HNL: 2007-08, 2015-16
Croatian Cup: 2008, 2016
Austrian Bundesliga: 2010-11
Austrian Cup: 2010
2. Bundesliga Promotion: 2011-12
Greek Cup: 2013-14
Football Oscar: Team of the year 2016