Although Sahin was born in Germany, he is of Turkish descent and Turkey is the country that he represented at various age-groups until he became a senior international for the first time in 2005. Earlier that year he and his teammates won the 2005 UEFA European Under-17 Football Championships in Italy where he was voted the best player of the tournament. When he was 16 the midfielder joined Borussia Dortmund and he quickly became not only the youngest player to appear in the Bundesliga but also its youngest-ever scorer. But despite this sensational start he did not progress as quickly as had been expected, but benefited from a loan-move to Feyenoord, where he was reunited with the Dutch coach who had signed him for Dortmund in 2005, Bert van Marwijk. On his return to Germany Sahin played in 88 out of a maximum 102 Bundesliga matches over the next three seasons. The third of those seasons, 2010/11, brought Dortmund their first domestic championship for nine years and Sahin was voted the Bundesliga’s best player. It wasn’t a major surprise that after weeks of intense speculation that he signed a lengthy six-year contract with Real Madrid in 2011. His first season in Spain was something of a letdown. Sidelined by injury, he was unable to make his Real debut until November and although his new club won the La Liga title by nine points from their fierce rivals Barcelona, Sahin only appeared in four of the 38 La liga matches.
With a promising career at a kind of stalling-point, a move to Liverpool where he would hopefully get more playing-time seemed to be beneficial to both the player and his new club. In a space of three days the supposed defensive midfielder showed his skill in arriving late into the box to a devastating effect, netting three goals in a space of four days. He desperately needed games to build up his match fitness and seemed bemused at the pace of the Premier League. He was virtually invisible in a few games as if he was hiding on the field, but hope remained he would prove a valuable member of the team when fully fit. After remaining firmly on the bench for three games running he got a start against Udinese in the final game of the Europa League group stage, but had to bow out in the twelfth minute with a broken nose. This turned out to be his final appearance for Liverpool as he returned to his parent club in January 2013 to be loaned to his first club, Borussia Dortmund, for the remainder of the season.
After returning to Germany Sahin played in fifteen Bundesliga matches in the second half of the 2012/13 season, scoring three times. He also appeared three times in the Champions League as Dortmund progressed to the Wembley final.
Sahin was a regular member of the Dortmund team in 2013/14 playing in all 34 Bundesliga matches, 9 Champions League matches, 4 German Cup-ties plus the German Super Cup match against Bayern Munich at the very start of the season. Borussia won that pre-season fixture 4-2 but finished a massive 19 points behind champions Bayern in the league table at the end of the season. They also reached the quarter-finals of the Champions League but were beaten at that stage by eventual winners Real Madrid. Sahin scored two league goals during the season, against Schalke and Augsburg. Towards the end of the season Borussia Dortmund were able to activate a clause in the player's contract that allowed him to move permanently back to the German club but his 2014/15 campaign was ravaged by a knee injury which has kept him out of the game for the first half of 2015/16 as well. He managed just twelve appearances in all competitions, one of them against Liverpool as a second half substitute of the Europa League tie in Dortmund.
2016/17 was another injury ravaged season, but in 2017/18 he did manage to stay fit and appeared 25 times in all competitions. In August 2018 he moved to fellow Bundesliga side Werder Bremen on a free transfer, scoring once in twenty appearances in his first season there. In 2019/20 he fell out of favour in the second half of the season and after his contract expired joined Turkish side Antalyaspor.