Born in Berlin to Bosniak parents, he started playing for local club Tennis Borussia Berlin at age nine. He stayed until he was 16, when he signed for HSV. On 4 November 2010, Bešić extended his contract with Hamburger SV until 1 July 2013. After being named as a substitute in several matches in the 2010–11 season, he received his debut in the Bundesliga against Borussia Dortmund on 12 November. Bešić came on a substitute in the 80th minute when Dortmund was already leading 2–0. Bešić started his first Bundesliga game against Mönchengladbach which he played all 90 minutes and they won 2–1.
In March 2012, Bešić was suspended from the first team, due to lack of discipline, Bosnian media also claimed that manager Torsten Fink "strangled" Bešić and threw him out of the dressing room.
Bešić claimed in an interview that he had declined an offer to play for Germany at youth level, because he only wished to play for Bosnia-Herzegovina. He made his debut for the Bosnia-Herzegovina U-21 selection in September 2010 against Italy. On 5 November 2010, he was called up to the senior team by Safet Sušić for the friendly game on 17 November 2010 with Slovakia. He made his debut in the match, thereby becoming the youngest player to ever play for Bosnia and Herzegovina. The record was previously held by Miralem Pjanić.