The Turkish side, who cancelled captain Ibrahim Uzulmez's contract this week following a spat with team-mate Ibrahim Toraman, seemed to be putting their off-field problems behind them as they had the best of a first half which saw Ricardo Quaresma level after Ognjen Vukojevic had put the visitors ahead against the run of play.
But the Ukrainians dominated after the break, with goals from Andriy Shevchenko and Ayila Yussuf, as well as a last-minute penalty from Oleg Gusev, all but killing the tie.
To make matters worse for Besiktas, they had Quaresma sent off on the final whistle for violent conduct.
Besiktas had the better of the early exchanges and really should have taken the lead before the visitors snatched the opener.
Within four minutes of kick-off, Bobo headed Quaresma's cross wide, before Fabian Ernst failed to find the target when he got on the end of Guti's corner.
Ismail Koybasi was next to threaten in the 22nd minute but he fired wide from 20 yards.
So it was very much against the run of play when Dynamo took the lead in the 27th minute.
Gusev's shot deflected off Tomas Sivok for a corner, which Gusev sent into the box.
Shevchenko headed the ball to Vukojevic, who finished from close range.
That breathed life into the visitors, who threatened again soon after when Besiktas goalkeeper Hakan Arikan turned Andriy Yarmolenko's 20-yard effort behind.
But the hosts got a deserved equaliser after 37 minutes when Bobo's cross made its way to Mert Nobre, whose header set up Quaresma to finish from the edge of the box.
After the break it was a different story as Kiev started to dominate.
Besiktas had a warning when Artem Milevskiy fired over from 12 yards three minutes after the break - and after 50 minutes they found themselves 2-1 down as Shevchenko headed home Gusev's corner, albeit via a deflection.
Besiktas looked for a leveller but both Guti and Koybasi were unable to keep their shots down.
And they were made to pay when Gusev's 57th-minute header rebounded off the bar to Yussuf, who finished to put his side in a strong position.
Besiktas had their chances to put themselves back in the tie, notably Hugo Almeida missing from close range after a Guti corner and Olexandr Shovkovskiy producing a couple of great saves, first from Bobo and then Guti.
Instead the goal came at the other end, with Gusev converting from the spot after he was fouled by Arikan - and Quaresma's dismissal rounded off a miserable week for Besiktas.
Besiktas 1-4 Dynamo Kiev: Match Report - view commentary, squad, and statictics of the game as it happened.