Born in Mannheim, Baden-Württemberg, Hakan Calhanoglu began his career with Karlsruher SC in the 2. Bundesliga, although they were relegated to the 3. Liga at the end of his first season. He signed a four-year deal to join Hamburger SV in the 2012 summer transfer window, being loaned back for his first season. In that season on loan, he helped the team win the league and return to the second tier.
Çalhanoğlu made his Hamburg and Bundesliga debut on 11 August 2013, as the team opened the season with a 3–3 away draw at Schalke 04. He started the match, and was replaced by Dennis Aogo after 74 minutes. He scored his first goals for the club on the 31 August, in a 4–0 home win over Eintracht Braunschweig; after replacing goalscorer Rafael van der Vaart in the 79th minute, he scored a minute later and then netted again with a free kick.
On 5 February 2014, Çalhanoğlu signed a two-year extension to his Hamburg contract, to keep him at the club until 2018. On 20 February, he scored a 41-yard free kick, against Borussia Dortmund in a 3–0 win, which ended Hamburg’s bad run. As he saw no defensive wall or teammates to pass, he struck a shot that swerved viciously to find the back of the net. A delighted Çalhanoğlu said afterwards: ‘I hit the free-kick the same way I do in training all the time. I’m delighted that I pulled it off!’. He was sent off for the first time in his career on 22 March, for his second booking in the 53rd minute of a 1–0 defeat away to VfB Stuttgart.
In his only full season at Hamburg, the team finished in 16th, and won a play-off against Greuther Fürth on away goals to maintain their honour as the only team to feature in every season of the top flight.
Hamburg were initially unwilling to sell Hakan Calhanoglu to other German teams, but their purchase of Pierre-Michel Lasogga from Hertha BSC made such an exception no longer financially viable. On 4 July 2014, he left Hamburg for league rivals Bayer Leverkusen, signing a five-year contract for a transfer fee of €14.5 million. His actions leading up to the transfer caused some controversy, including taking sick leave from Hamburg; he justified the leave by saying that he was stressed by aggression from fans, including vandalism of his car. He also criticised Hamburg’s director Oliver Kreuzer, accusing him of betrayal. The move was later criticised by Son Heung-min, as a response to Çalhanoğlu calling his former Leverkusen teammate’s transfer to Tottenham Hotspur “badly advised”.
He made his debut for the club on 19 June, starting in a 3–2 away win at Copenhagen in the first leg of a UEFA Champions League qualification play-off. Four days later, he played his first league game for his new club, a 2–0 win away to Borussia Dortmund on the opening day of the new season. On 27 August he scored his first Leverkusen goal, netting his team’s second in a 4–0 win in the second leg of their European play-off. He scored his first league goal for the club on 12 September, Leverkusen’s second in a 3–3 home draw against Werder Bremen. It was the first game in any competition that season which they did not win. Çalhanoğlu was nominated for the 2014 Golden Boy Award in October.
On 25 February 2015, he scored the only goal as Leverkusen defeated Atlético Madrid in the last 16 first leg in the Champions League. However, three weeks later in the second leg, he took their first attempt in a penalty shoot-out and had it saved by Jan Oblak, as Atlético went on to win. On 2 May, Çalhanoğlu opened a 2–0 home win over newly crowned league champions Bayern Munich, with a free kick.
He opened his second season at the club by scoring a penalty on 8 August in a 3–0 win at fourth-tier Sportfreunde Lotte in the first round of the DFB-Pokal. Two weeks later, with a free kick, he scored the only goal of a league win at Hannover 96. On 26 August, he opened a 3–0 win over Lazio as Bayer came back from a first-leg deficit to qualify for the group stage of the Champions League. In their first game of the group stage, Çalhanoğlu scored twice — including a penalty earned by a handball of his free kick — in a 4–1 home rout of BATE Borisov.
He opened his 2016–17 goalscoring account on 14 September in the 2–2 home draw against CSKA Moscow in a Champions League group stage game — the 50th goal in his senior club career.
On 2 February 2017, Hakan Calhanoglu received a four-month ban from FIFA for a breach of contract relating to his time at Karlsruhe. He received €100,000 from Turkish club Trabzonspor in 2011 after agreeing to sign with the club but later extended his contract with Karslruhe. Trabzonspor had initially sought repayment of the €100,000 paid as well compensation of €1 million but FIFA ruled that €100,000 and a four-month ban would suffice.