Bayern Munich scraped past Hertha Berlin 1-0 on Saturday thanks to a late goal from Bastian Schweinsteiger and the Bundesliga title will belong to the Bavarians if VfL Wolfsburg fail to win on Sunday.
Pep Guardiola's league leaders are 15 points clear with four matches left and will celebrate their third successive domestic crown if second-placed Wolfsburg cannot manage a victory at Borussia Moenchengladbach on Sunday.
"We may not be champions mathematically but in theory we are," the Spaniard told reporters. "The title is almost ours, but we have to concentrate on other tasks. Our legs were a bit heavy today."
Guardiola rested several players who helped crush Porto 6-1 in midweek to advance to the Champions League semi-finals.
Treble-chasing Bayern had Schweinsteiger fit again and Spaniard Javi Martinez back on the bench for the first time since tearing knee ligaments last year but never hit top form against the battling Berliners.
A fine run from Mitchell Weiser ended with him cutting the ball back for Schweinsteiger to score the only goal 10 minutes from time.
Borussia Dortmund winger Pierre-Emerick Aubameyang converted an audacious penalty and set up another goal in a 2-0 victory over Eintracht Frankfurt that kept their Europa League hopes alive.
The Gabon international chipped a 24th-minute penalty down the middle of the goal as keeper Kevin Trapp dived too early.
Aubameyang then charged down the wing and crossed for Shinji Kagawa to score the second goal as Dortmund, last season's runners-up, moved up to eighth on 39 points, three behind sixth-placed Augsburg.
The top six qualify for European competition, or the top seven if Bayern or Wolfsburg win the German Cup.
Struggling Hamburg SV claimed their first goals in seven games to beat Augsburg 3-2 and move out of the bottom two into the relegation playoff spot on 28 points. It was their first win in 10 league games.