Six teams in the top-nine of the Bundesliga met on the penultimate matchday, with European places there to be decided. Wolfsburg, Leverkusen, Gladbach and Schalke all sealed wins, whilst Augsburg lost at home.
Wolfsburg-Dortmund was a preview of the German Cup final on May 30, the teams also had something to play for in terms of the Bundesliga table.
Borussia Dortmund were slow off the mark, as they have been so often this season. Kevin De Bruyne found space down the left-hand side, crossed to an unmarked Daniel Caligiuri, who slotted home after just 42 seconds – the fourth goal BVB have conceded inside a minute this season. It was De Bruyne's 21st assist of the season, a new Bundesliga record.
10 minutes later, the scores were level. Kevin Kampl was tripped by Diego Benaglio as he rounded the goalkeeper, and BVB top scorer Pierre-Emerick Aubameyang stepped up and slotted home from the penalty spot. Aubameyang also missed a golden chance to put Dortmund ahead before half-time.
The second-half started as fast as the first, with Wolfsburg scoring inside five minutes. Timm Klose headed down from an inswinging corner and the ball dropped to his defensive partner Naldo, who smashed the ball past Mitchell Langerak.
Marco Reus and Ciro Immobile came on for Jürgen Klopp's side as Dortmund looked to equalize. But to no avail. The match was a showcase for attacking football, giving fans reason to look forward to the German Cup final.
Wolfsburg hold on to place in the Bundesliga heading into the final matchday. And if Borussia Dortmund avoid defeat to Werder Bremen next Saturday, they qualify for the Europa League.
Leverkusen end Hoffenheim's European hopes
Goals in both halves at the BayArena sealed Bayer Leverkusen an eighth Bundesliga win in their last 10 league games. Hoffenheim – who have the worst form in the last six games in the Bundesliga – knew a win would be hard to come by and hardly threatened Bernd Leno's goal.
Nonetheless it was a competitive first half, with the home side showing off their new kits for next season. Just before the half-time whistle, Leverkusen took the lead. Free-kick specialist Hakan Calhanoglu stepped up for another set-piece and with the help of a poor Oliver Baumann effort, scored his sixth dead-ball goal this season.
15 minutes into the second half Leverkusen doubled their lead. Stefan Kiessling picked up a through ball from Calhanoglu and slotted home past Baumann. It was the ninth goal of the striker's inconsistent season.
Chances were few and far between for the rest of the game, whcih ended 2-0. Bayer Leverkusen will finish in fourth place. Barring freak results, Hoffenheim can end up no higher than eighth.
Faols return to the big show
A Raffael double sealed Borussia Mönchengladbach's place in the Champions League for next season. Hosts Werder Bremen, also in the European hunt, rarely troubled Yann Sommer in the Foals' goal.
It was tough to seperate Werder and Gladbach in the first half, and not just with the competitive football being played. Werder's new home kit matched well with the green grass of the pitch, as well as Gladbach's black and green away strip.
Oscar Wendt had a cross deflected onto the post by Sebastian Prödl, with Koen Casteels stranded in goal inside 20 minutes. Zlatko Junuzovic – another Bundesliga set-piece specialist – had a free-kick blocked, before four more shots rebounded off an imperious Gladbach defence, and the first half ended scoreless.
That changed straight away in the second half. Nine minutes in Raffael had the away side leading. Wolfsburg-bound Max Kruse smashed a low cross to the back-post, which the Brazilian eventually put into the net for the lead.
With just six minutes to play, Raffael doubled Gladbach's lead and secured an automatic place in the Champions League next season. High-pressing from substitute Andre Hahn caused a block from Assami Lukimya's attempted clearance, with the ball falling to Raffael. He comfortably finished past Casteels.
Mönchengladbach can still finish second with a win and a Wolfsburg loss on the final matchday, whilst Werder Bremen are level on points with Borussia Dortmund in 8th and must win to qualify for the Europa League.
Augsburg heading for Europe despite loss
Augsburg's can plan on European competition even though they lost 2-1 at home to struggling Hannover. Even worse the hosts had two men sent off in the final five minutes, after a Paul Verhaegh penalty had brought them level at half-time.
Hannover captain Lars Stindl opened the scoring in his penultimate game with the club. Stindl slotted home from a Jimmy Briand flick. But Hannover haven't kept a clean sheet in 2015 and Augsburg kept that run going just six minutes later. Abdul Rahman Baba forced Hiroki Sakai to bring him down in the box. Up stepped Paul Verhaegh – who missed a penalty for the first time in the Bundesliga last week – who chipped his spotkick down the middle past the diving Ron-Robert Zieler.
Nine minutes into the second half, Hannover re-took the lead. Lars Stindl again the scorer as he beat two Augsburg defenders to Briand's cross from the left. Augsburg, who had kept two clean sheets in a row prior to the game, were fighting to avoid defeat against a team winless in 2015.
With 13 minutes to play, Hannover were reduced to ten men. Sakai sent off for a second yellow card, but as Augsburg pressed for a second equalizer, frustration boiled over. Goalscorer Verhaegh was shown a second yellow card in the 90th minute, before striker Raul Bobadilla was given his marching orders six minutes into injury time after a confrontation with Miiko Albornoz.
But barring double-digit results next week, Augsburg can finish no worse than seventh and are now set for their first-ever place in European competition.
Schalke head to the Europea League
Schalke will be playing in Europe next season, but only after a last minute own-goal from Paderborn captain Uwe Hünemeier after what was far from an entertaining game in Gelsenkirchen.
After a week of negatives headlines about Schalke, the Royal Blue fans wanted to make their feelings known about the club's difficult situation and stayed silent for the first 45 minutes in the Veltins Arena. An eerie atmosphere, in which the travelling Paderborn fans were the only voices heard, was matched by a weak first half.
The second half was sour too, as Schalke captain Benedikt Höwedes left the pitch with a nasty looking injury after 57 minutes. Both sides had plenty of shots, but none made it past Ralf Fährmann or Lukas Kruse. Until the dying minutes.
Roberto Di Matteo made six changes to his side that were taken apart by Cologne last weekend and returning striker Klaas-Jan Huntelaar was at hand to help seal the late win for Schalke. A long ball from Tranquillo Barnetta sailed into the Paderborn box and as Huntelaar and Paderborn captain Uwe Hünemeier jostled for the ball, Hünemeier's sent the ball past Kruse into his own net. The 1-0 late win for Schalke took them two points clear of Augsburg in fifth.
Wolfsburg 2-1 Dortmund (Caligiuri 1‘, Naldo 49‘ – Aubameyang pen 11'); Leverkusen 2-0 Hoffenheim (Calhanoglu 45', Kießling 60‘); Werder Bremen 0-2 Borussia Mönchengladbach (Raffael 54‘, 84'); Augsburg 1-2 Hannover (Stindl 24‘, 54' – Verhaegh pen 30‘); Schalke 1-0 Paderborn (Hünemeier - OG 90')