The Dutch champions maintained their 100-percent record in Group C with a fifth win in as many games. Haller has now scored a remarkable nine goals in this season's competition. Ajax only needed a point to be sure of top spot, but were dealt an early blow as full-back Noussair Mazraoui handled from a corner and a penalty was awarded following a VAR review.
Algeria midfielder Rachid Ghezzal stepped up to lash a fine spot-kick into the top corner and give Besiktas a 22nd-minute lead. An end-to-end game saw Dusan Tadic and Mohamed Daramy both go close for Ajax, but the best chance for a second goal before the break fell to Besiktas striker Cyle Larin, only for the Canada international's poor first touch to let him down.
Ajax boss Erik ten Hag, linked with the vacant Manchester United manager's job this week, sent on Haller at half-time. The Ivory Coast forward made an impact just nine minutes later, tapping in after a sweeping move.
Haller completed the turnaround midway through the second half, rifling the ball into the top corner to draw level with Bayer Munich striker Robert Lewandowski at the top of this season's Champions League goalscoring chart.
The former West Ham man had another effort ruled out for offside late on, but that did not dampen a fine outing for Ajax.
Standout matches today