Hibs and Saints win, Dons draw
Fortuna Dusseldorf were relegated from the Bundesliga this afternoon as Hoffenheim and Augsburg staged final-day escape acts.
Dusseldorf went down 3-0 at Hannover to finish the season second bottom of the table, with their two relegation rivals both ending their campaigns with victories.
Mame Diouf put Hannover ahead in the 36th minute and Didier Ya Konan put the result beyond doubt with a second-half double. The visitors could not muster any sort of response as their fifth straight defeat, and eighth in 10 league games, condemned them to an immediate return to the second tier.
Hoffenheim, who started the day two points behind Dusseldorf, scored two late goals to win 2-1 at Champions League finalists Borussia Dortmund and make the relegation play-offs.
Things looked bleak for the visitors when Robert Lewandowski put them behind after six minutes, but Sejad Salihovic equalised with a penalty in the 77th minute.
Three minutes later Dortmund goalkeeper Roman Weidenfeller saw red for bringing down Sven Schipplock when he was through on goal and, with no more substitutions left, winger Kevin Grosskreutz went in goal for the resulting penalty.
Salihovic took it again, and scored again, to complete the comeback.
Hoffenheim now face Kaiserslautern, who came third in the second tier, in a two-legged play-off for the right to stay in the Bundesliga.
Augsburg guaranteed their top-flight status with a 3-1 win at home to relegated Greuther Furth, a result which lifted them out of the bottom three for the first time all season.
Tobias Werner put the hosts ahead after 30 minutes after Edgar Prib had seen a penalty saved at the other end, and Jan-Ingwer Callsen-Bracker made it two 10 minutes after the break.
Florian Trinks made things nervous for Augsburg by halving the deficit just after the hour mark, but Ji Dong-won allowed them to breathe easy with a third 15 minutes from time.
Schalke took the fourth and final Champions League place by winning what was effectively a play-off with Freiburg 2-1.
Julian Draxler put the Royal Blues ahead after 20 minutes and, even though Jonathan Schmid levelled in the 54th minute, Julian Schuster's own goal three minutes later handed victory to Schalke.
Eintracht Frankfurt joined Freiburg in the Europa League thanks to a 2-2 draw with Wolfsburg meaning Hamburg missed out as they lost 1-0 to third-placed Bayer Leverkusen.
Champions Bayern Munich recovered from conceding three times in the opening 10 minutes to win 4-3 at Borussia Monchengladbach, with Franck Ribery scoring twice.
Werder Bremen ended a miserable season which earlier this week cost Thomas Schaaf his job with a 3-2 loss at Nurnberg, while Stuttgart draw 2-2 at home to Mainz.
The win for Hibernian clinched seventh place in the SPL and ensures they go into the William Hill Scottish Cup final on the back of three consecutive victories.
The substitute guided home a powerful header in the 79th minute to complete a decent day's work for Hibs, who avoided any obvious injuries eight days before their Hampden encounter with Celtic.
Late goals from Paul McGowan and Conor Newton secured St Mirren just their third away win of the season as they rounded off their campaign with a 3-1 win over Kilmarnock at Rugby Park.
In the Buddies' three previous attempts to overturn Kilmarnock this term, the best they had managed was two draws, but they finally overcame Kenny Shiels' side with McGowan's spot-kick success 15 minutes from time ahead of a late Newton effort.
John McGinn had put Danny Lennon's side ahead with his first senior goal after 20 minutes but Kris Boyd levelled soon after for the hosts.
Killie's unbeaten record against the men from Paisley was ruined, however, with McGowan and Newton's late intervention.
Elsewhere, Aberdeen and Hearts defied the weather to serve up an entertaining match despite ending their seasons with a 1-1 draw.
The home side had the better of the game but fell behind to Ryan Stevenson's header, before Jamie Hamill's own-goal ensured a share of the points.