The Turkish Super Lig side made a good start to the Group C clash, but Michy Batshuayi's shot was blocked by goalkeeper Gregor Kobel in the sixth minute at Istanbul's Vodafone Park.
The visitors took the lead with Jude Bellingham's finish in the 20th minute before Erling Haaland made the score 2-0 in the first half-stoppage time.
In the second half, Besiktas reduced the deficit in the stoppage time with a header from Francisco Montero but it was not enough for the home side.
The Bundesliga giants captured all 3 points in their Champions League opener.