Florian Grillitsch had put Bremen one up before half time, but Alexander Meier came off the bench to level up just after the break.
With a late winner reminiscent of Bremen's dramatic late escape in the final game here against Frankfurt last season, the teenager Barkok curled in a winner in the final minute to take all three points.
Kruse and Pizarro both available at last
They were boosted here with Max Kruse making his first Bundesliga appearance since his return to the club in the summer, and he was joined by Claudio Pizarro who was able to start for the first time this season. Thanos Petsos and Fin Bartels made way for them.
The win for Frankfurt would see them join four other teams level on 21 points behind leaders Leipzig and Bayern Munich. They were unbeaten since their defeat to Freiburg at the beginning of October.
They made just one change from the side that beat 1. FC Köln in their previous match two weeks ago, with captain Meier, who had been without a goal in four appearances, replaced by Branimir Hrgota.
Grillitsch gives Bremen the lead
Both sides had an early sighter from outside of the box. David Abraham fired over for Eintracht, not getting a corner despite a slight touch on the ball from Felix Wiedwald. Kruse meanwhile had his own shot saved by Lukas Hradecky, with Zlatko Junozovic unable to do anything with the rebound.
It was an open game with both sides continuing the create chances, with Marco Fabián almost catching out Wiedwald and Serge Gnabry, on top form again, shooting wide across goal after beating Jesús Vallejo.
Frankfurt’s best chance to score perhaps came when a pull back from Timothy Chandler found Fabián, who had his shot blocked by Milos Veljkovic. Bastian Oczipka put the rebound over.
Slowly though the hosts were creating themselves more chances. Gnabry again had a chance but shot over, whilst an even better chance came when Pizarro found Kruse, who headed over, although he might have put it back in the box for Junozovic.
The goal when it came though was sudden. Niklas Moisander launched a long ball, finding Grillitsch who had eased his way unmarked through the defence. He did well to bring the ball under control before popping it into the top corner of the net.
Meier makes immediate impact for Frankfurt
Both sides started the second half brightly, with Mijat Gacinovic and Hrgota, the latter of whom was also incorrectly given offside, forcing Wiedwald into saves, whilst a Junozovic had a free kick saved by Hradecky and Kruse shot wide after a scramble in the Frankfurt box.
However Niko Kovac had already looked to play his joker, bringing on Meier at the break. And he needed just six minutes to make a difference. The ball found its way to him on the edge of the box, and he placed it past Wiedwald to draw Frankfurt level.
He had two more chances to put Frankfurt in front soon after. Both were similar, with the ball finding its way almost inadvertently to Meier, but on both occasions he was denied by Wiedwald.
They then had an even better chance. After a deflected cross from Chandler, Hrgota looked to find Meier but was denied by a vital interception from Theodor Gebre Selassie, with Wiedwald getting a touch too.
Debutant leaves Bremen stunned
It remained open, and the 38-year-old Pizarro, finally back from a muscle injury, had his golden chance to put Bremen back in front.
Under pressure from Gnabry, Hradecky misplaced a clearance straight to Philipp Bargfrede, himself off the bench for a first appearance of the season. Kruse let the cross pass towards Pizarro, but the Peruvian couldn’t beat the keeper, who redeemed himself by just getting a touch to the shot.
In the closing stages Frankfurt were keeping the ball to themselves, and it was no surprise when they scored the winner, just who it was. After they nearly scored from a corner, Kruse attempted a counter attack for Bremen, but was disposed by Oczipka, who found Barkok, who launching a curling effort into the goal past Wiedwald.
Three minutes were added on, but Bremen had no opportunity to save themselves from yet another defeat. Even a draw wouldn’t have lifted them out of the bottom three, but it was still a bitter blow as Frankfurt’s unlikely challenge for the European places continued.