Born in Copenhagen, Sørensen began playing football with hometown clubs KFUM Roskilde and FC Roskilde before joining Lyngby in 2007. After breaking into the first team, he was under contract until 2013.
Sørensen officially signed for Juventus on 27 August 2010 after a trial with the Turin-based club in July of the same year. He was originally included as a member of the Juventus Primavera team for the 2010–11 season, however he was called into the first team midway through the 2010–11 Serie A season by then-Juventus coach, Luigi Delneri. After injuries to Leandro Rinaudo and Zdeněk Grygera that would rule them out for several months, Sørensen was called up to the first team for the first time against Bologna on 23 October 2010, and again against Milan. In the next league match, on 7 November, due to the unavailability of centre-backs Giorgio Chiellini and Nicola Legrottaglie, Sørensen made his first start alongside Leonardo Bonucci in the centre of defence. In that match, The Old Lady defeated Cesena 3–1. In the next match, right back Marco Motta was suspended and Sørensen replaced him against Roma. From that match onwards, Sørensen continued to feature for the club at right back, and even managed to maintain a starting position for much of the second half of the season ahead of Motta and Grygera. On the long-awaited Derby d'Italia between Juventus and Internazionale, he notably played the full 90 minutes and silenced Inter forward Samuel Eto'o in an astounding performance in which he also made the assist for the game's only goal. On 10 May 2011, Sørensen had signed an additional four-year contract with Juve. During the 2011–12 Serie A season, he found little space in the first-team under new head coachAntonio Conte. He was thus sold on a co-ownership deal to fellow Serie A club Bologna during the winter transfer market in order to gain regular first-team playing time.
Bologna
On 17 January 2012, Sørensen was officially sent to Bologna in a co-ownership deal for €2.5 million. Despite making just three league appearances for his new club during the remainder of the 2011–12 Serie A campaign, the young defender became an integral part of his club's first team throughout the 2012–13 Serie A season, after they had renewed the co-ownership agreement with Juventus. On 20 June 2013, Sørensen's co-ownership deal with parent club Juventus was renewed once again, and Bologna continued to hold his registration for the 2013–14 Serie A campaign that had ultimately ended in relegation for the Emilia-Romagna-based club after they had finished 19th in the Serie A standings.
Return to Juventus
On 20 June 2014, Sørensen was re-signed on a permanent basis by Juventus for €800,000. In August 2014, Sørensen started training with English side Leeds United ahead of completing a loan move to the club, however the move collapsed after a disagreement between the player's agent and Leeds owner Massimo Cellino, and he returned to Juventus.
Sørensen officially signed for Hellas Verona on 29 August 2014 on a one-year loan deal for €300,000.
1. FC Köln
In July 2015, German Bundesliga side 1. FC Köln signed Sørensen for €1.6 million. He quickly established himself as a starter in the centre of Köln's defence and, in January 2017, signed a contract extension until 2021. The team qualified for the 2017–18 UEFA Europa League but suffered relegation just one season later.
On 18 August 2019, Sørensen was loaned out to Swiss club BSC Young Boys for the 2019-20 season.
International career
Sørensen has been capped four times for the Danish U17 team, twice against Portugal, and twice against Greece. He also played once for the U18 team in an unofficial friendly and against Romania U18 as an unused substitute. He was a part of the Danish squad for the UEFA European Under-21 Championship, but he only played the first match and got injured as Denmark were eliminated after the group phase. Sørensen was called up to the senior Denmark squad in June 2015 for a friendly against Montenegro.