Bayern Munich must wait to be confirmed as Bundesliga champions for the ninth season in a row after they suffered a surprise defeat at Mainz.
The league leaders need just one win from their remaining three games to seal the title.
However, they fell behind early on when Jonathan Burkardt's 18-yard strike beat Germany keeper Manuel Neuer.
Robin Quaison's header made it 2-0 before fit-again Robert Lewandowski got one back in the 90th minute.
Bayern, who have three games left, are on 71 points, 10 clear of Leipzig, who play VfB Stuttgart on Sunday. The Bavarians will be champions if Leipzig lose.
Meanwhile Erling Braut Haaland scored twice as 10-man Borussia Dortmund kept alive their hopes of a top-four finish in the Bundesliga with a win at Wolfsburg.
Haaland opened the scoring when he capitalised on a mistake in defence to finish from close range.
Jude Bellingham was sent off for the first time in his professional career following a foul on Kevin Mbabu.
But Haaland doubled his side's lead when he raced clear to score his 25th goal of the season.
The Norway international's double also means he has scored 16 away goals this term, breaking the club record set by Pierre-Emerick Aubameyang in the 2016-17 season for the most in a single campaign.
Dortmund are one point off the top four with three games remaining and two behind third-placed Wolfsburg.