Haller is the first player to score five times in his first two Champions League matches.
Ajax, which has scored 30 goals in seven Dutch league matches this season, could have won by more against a team missing key players through injury and illness but for some poor finishing and good saves by Beşiktaş goalkeeper Ersin Destanoğlu, who twice denied Haller and blocked a shot by substitute David Neres in the 85th.
Ajax eased up in the second half, giving Beşiktaş a chance to get back into the match. Kenan Karaman looked to have scored in the 62nd minute but his effort was ruled out by referee Benoît Bastien for a foul on Jurriën Timber.
Borussia Dortmund, which beat Beşiktaş 2-1 two weeks ago, was hosting Lisbon later Tuesday.
More AP soccer: https://apnews.com/hub/soccer and https://twitter.com/AP_Sports