The hosts had stormed into a 3-0 lead thanks to a Pablo de Blasis double and Jhon Córdoba, with Levin Öztunali scoring his first Mainz goal after Sandro Wagner had pulled one back.
However the game turned on the sending off of Gaëtan Bussmann, with substitute Mark Uth scoring two in two minutes, and Ádám Szalai then getting his first Hoffenheim goal since April 2015 to complete the comeback against his former club.
Four changes apiece
Mainz will have been unconcerned by their opening day defeat to Borussia Dortmund, however Hoffenheim would have been ruing throwing away the lead twice against RB Leipzig in the late Sunday game two weeks ago.
Both sides made four changes to their starting elevens. Bussmann replaced Daniel Brosinski at left-back, with Öztunali given a debut, De Blasis awarded for his late assist against Dortmund and Córdoba recalled after missing that game through injury.
Hoffenheim switched both of their full-backs, giving starts to Ermin Bičakčić and Jeremy Toljan, whilst Kevin Vogt and Uth dropped out for skipper Eugen Polanski and Pirmin Schwegler.
Recent encounters between the two sides have produced plenty of goals, with nine goals across their two meetings last season, but that didn’t prepare for the onslaught that followed here.
Mainz and De Blasis run riot
Mainz got their first home goal of the season within the first three minutes. A corner taken by Yunus Malli pinged around the box, with Oliver Baumann trying to get it away. Instead the ball went in the direction of De Blasis, and the Argentinian was able to score with a powerful header despite his small stature.
He then came close to making it two with a strike from outside the box, after a lay off from Fabian Frey, however Baumann made sure it went over with the slightest of touches.
Although Fabian Schär had an early header go over before Mainz took the lead, Hoffenheim weren’t creating much else, but Andrej Kramarić came close when he got the ball to creep its way onto the box, before Jonas Lössl could collect.
However Mainz looked more threatening, and duly it made two. Levin Öztunali on the right crossed the ball back out through space in the Hoffenheim defence to De Blasis, who struck first time past Baumann.
Öztunali pours water on hope for Hoffenheim
It got even worse for Hoffenheim soon after. Baumann will quickly want to forget his 200th appearance in the Bundesliga, after hopelessly letting Córdoba’s shot through his grasps. It was a great ball from the Mainz half by Stefan Bell, with the Colombian getting the better of Schär to shoot.
That could have been curtains for Hoffenheim, but they weren’t giving up. Lukas Rupp had a chance go over, and after Schär was forced off, with Uth replacing him, they found a glimmer of hope through Wagner.
Polanski played a ball forward from the centre circle, and after a failed interception from Leon Balogun, Kramarić passed on to Wagner, who buried it with a poacher’s instinct.
Rupp had another chance go wide, and soon his side were left reeling again. A move on the right of the box for Mainz was started and finished by Öztunali, with a strike over Baumann’s head into the top of the net to make it 4-1. A fine finish to a thrilling half, from a Mainz perspective at least.
Bussmann sending off shifts the momentum
Mainz weren’t content to sit on the big advantage, with Malli going closest, but wide. Also going wide was Bičakčić, heading wide after a Hoffenheim corner.
But the game turned as Hoffenheim broke forward, and Kramarić went down after slight contact from Bussmann on the edge. Despite having Giulio Donati back to cover, the referee saw Bussmann as the last man, and harshly decided to pull out the red card.
Even down to ten, another goal would surely have made the game safe for Mainz, and Córdoba came close to getting one. He was found by an excellent long ball from Donati, and after an excellent first touch, he couldn’t quite keep the shot on target.
Uth sparks a grandstand finish
There was always the danger that Hoffenheim could make the most of the man advantage, but even they might not have expected everything to happen so quickly. Following a free-kick, the ball came to Kramarić, who played in a dinked cross into the box which was headed in by Uth.
Just a minute later Uth struck again to really put the jitters into Mainz. Receiving the ball form Schwegler, he unleashed a firecracker of a shot, which left Lössl with little chance.
The game had now turned on its head. Every time they went forward now it looked like they might equalise. Sebastian Rudy from the right of the box struck the cross bar, and a scramble in the box led to Wagner firing over.
But it was Szalai who brought the comeback to its dramatic conclusion. A Rudy corner fell to Kramarić, who squeezed it through a blur of red shirts to the Hungarian, who got the ball through Lössl’s legs and into the net.
Mainz came closest to grabbing a winner, with Malli a good bet to score if he had connected with a Christian Clemens cross, and Bell had an overhead kicked saved by Baumann. Rudy had a free-kick in the dying moments for Hoffenhiem, but Lössl caught it to prevent one final twist to the most dramatic of games.