Fortuna Düsseldorf stunned Leipzig with two late goals to draw 2-2 in the Bundesliga on Wednesday and boost its hopes of avoiding relegation.

Two goals in three minutes from Kevin Kampl and Timo Werner had Leipzig on course to consolidate third place and all but secure a place in the Champions League. But Steven Skrzybski netted in the 87th minute and Andre Hoffmann equalized in injury time to lift Düsseldorf out of an automatic relegation place with two rounds of the season remaining.

More Images
Duesseldorf's Andre Hoffmann, left, scores his side's second goal during the German Bundesliga soccer match between RB Leipzig and Fortuna Duesseldorf in Leipzig, Germany, Wednesday, June 17. 2020. Center are against Duesseldorf's Zanka and right Alfredo Morales. (Jan WoitasPool via AP)

Fortuna Düsseldorf stunned Leipzig with two late goals to draw 2-2 in the Bundesliga on Wednesday and boost its hopes of avoiding relegation.

Dortmund's Jadon Sancho walks on the pitch during the German Bundesliga soccer match between Borussia Dortmund and 1. FSV Mainz 05 in Dortmund, Germany, Wednesday, June 17, 2020. (Guido KirchnerDPA via AP, Pool)

Second-place Borussia Dortmund, which has already booked a place in Europe’s premier competition, slumped to a 2-0 loss at home to Mainz.

Dortmund's head coach Lucien Favre, right, gestures prior to the German Bundesliga soccer match between Borussia Dortmund and 1. FSV Mainz 05 in Dortmund, Germany, Wednesday, June 17, 2020. (Guido KirchnerDPA via AP, Pool)

Schalke lost 2-1 at Eintracht Frankfurt to stretch its club-record winless run to 14 games.

Schalke's players walk on the pitch after the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. Frankfurt defeated Schalke by 2-1. (Kai PfaffenbachPool Photo via AP)

David Abraham headed in Kostic’s free kick in the 50th, before Weston McKennie pulled one back with a cushioned header to Alessandro Schöpf’s corner before the hour-mark.

Schalke's head coach David Wagner points during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Arne Dedertdpa via AP)

More AP soccer: https://apnews.com/Soccer and https://twitter.com/AP_Sports

Eintracht Frankfurt's Danny da Costa plays the ball during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Eintracht Frankfurt's Danny da Costa plays the ball during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Schalke's head coach David Wagner, front, holds his face mask before the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Schalke's head coach David Wagner, front, holds his face mask before the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Leipzig would have been six points clear of fifth-place Borussia Mönchengladbach with a vastly superior goal difference, but now the gap is four points. The top four qualify for the Champions League.

Duesseldorf's Andre Hoffmann, left, scores his side's second goal during the German Bundesliga soccer match between RB Leipzig and Fortuna Duesseldorf in Leipzig, Germany, Wednesday, June 17. 2020. Center are against Duesseldorf's Zanka and right Alfredo Morales. (Jan WoitasPool via AP)

Duesseldorf's Andre Hoffmann, left, scores his side's second goal during the German Bundesliga soccer match between RB Leipzig and Fortuna Duesseldorf in Leipzig, Germany, Wednesday, June 17. 2020. Center are against Duesseldorf's Zanka and right Alfredo Morales. (Jan WoitasPool via AP)

Second-place Borussia Dortmund, which has already booked a place in Europe’s premier competition, slumped to a 2-0 loss at home to Mainz.

That means Dortmund is just three points clear of Leipzig with its second place under threat ahead of a meeting between the two this weekend. Bayern Munich secured its eighth straight Bundesliga title on Tuesday.

Bayer Leverkusen moved fourth, three points behind Leipzig, with a 3-1 win over Rhine rival Cologne.

Dortmund's Jadon Sancho walks on the pitch during the German Bundesliga soccer match between Borussia Dortmund and 1. FSV Mainz 05 in Dortmund, Germany, Wednesday, June 17, 2020. (Guido KirchnerDPA via AP, Pool)

Dortmund's Jadon Sancho walks on the pitch during the German Bundesliga soccer match between Borussia Dortmund and 1. FSV Mainz 05 in Dortmund, Germany, Wednesday, June 17, 2020. (Guido KirchnerDPA via AP, Pool)

Schalke lost 2-1 at Eintracht Frankfurt to stretch its club-record winless run to 14 games.

The latest loss was largely self-inflicted. Schalke midfielder Can Bozdogan was sent off in his second league start with his second yellow card in the 77th minute, just before Andre Silva missed a great chance to make it 3-1 to Frankfurt when he only had the goalkeeper to beat.

The home side opened the scoring in the 29th, when Johnjoe Kenny lost the ball in attack to Filip Kostic, who quickly launched a counterattack. Kostic sent through Daichi Kamada, who crossed first time for Silva to score.

Dortmund's head coach Lucien Favre, right, gestures prior to the German Bundesliga soccer match between Borussia Dortmund and 1. FSV Mainz 05 in Dortmund, Germany, Wednesday, June 17, 2020. (Guido KirchnerDPA via AP, Pool)

Dortmund's head coach Lucien Favre, right, gestures prior to the German Bundesliga soccer match between Borussia Dortmund and 1. FSV Mainz 05 in Dortmund, Germany, Wednesday, June 17, 2020. (Guido KirchnerDPA via AP, Pool)

David Abraham headed in Kostic’s free kick in the 50th, before Weston McKennie pulled one back with a cushioned header to Alessandro Schöpf’s corner before the hour-mark.

Abraham cleared off the line to deny Schalke an equalizer before Bozdogan was sent off.

Also, Augsburg lost 3-1 at home to Hoffenheim.

Schalke's players walk on the pitch after the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. Frankfurt defeated Schalke by 2-1. (Kai PfaffenbachPool Photo via AP)

Schalke's players walk on the pitch after the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. Frankfurt defeated Schalke by 2-1. (Kai PfaffenbachPool Photo via AP)

More AP soccer: https://apnews.com/Soccer and https://twitter.com/AP_Sports

Ciarán Fahey on Twitter: https://twitter.com/cfaheyAP

Schalke's head coach David Wagner points during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Arne Dedertdpa via AP)

Schalke's head coach David Wagner points during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Arne Dedertdpa via AP)

Eintracht Frankfurt's Danny da Costa plays the ball during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Eintracht Frankfurt's Danny da Costa plays the ball during the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Schalke's head coach David Wagner, front, holds his face mask before the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)

Schalke's head coach David Wagner, front, holds his face mask before the German Bundesliga soccer match between Eintracht Frankfurt and FC Schalke 04 in Frankfurt, Germany, Wednesday, June 17, 2020. (Kai PfaffenbachPool Photo via AP)