Leverkusen looked pale yesterday against St Pauli and have buried their chances of defending the championship. They couldn't dominate the game, went defensive after taking the lead but that backfired on them.
Now the gap between them and Bayern is 8 points (with Bayern having much better goal difference), with 4 games to go. Their 2nd place is not threatened, as the gap between Leverkusen and the 3rd Eintracht is 12 points.
The real battle will be fought for the 4th spot, the last one that grants participation in the Champions League. Dortmund is pressing hard, they did a good job yesterday by defeating Moenchengladbach. Out of the outstanding 4 games Dortmund have to play, 3 are fairly easy, against teams from the bottom of the table, and one is an away game against Leverkusen, but, at that stage, Leverkusen will have nothing left to play for, so they might go easy and let Dortmund win.
I expect Dortmund to finish in the top 5.