Franck Ribery scored an 83rd-minute winner as champions Bayern Munich beat RB Leipzig 1-0 on Wednesday to cut the gap to Bundesliga leaders Borussia Dortmund to six points with one game remaining before the winter break.
The 35-year-old French winger, who had come on for the injured Serge Gnabry midway through the first half, shook off two markers and fired in from 10 metres to break the deadlock as Bayern notched their fourth consecutive league win.
Bayern, back to winning ways after a dip in form earlier in the campaign, are third in the table on 33 points, behind second-placed Borussia Moenchengladbach, who were 2-0 winners against Nuremberg on Tuesday, on goal difference.
"You could tell this was a very important game," said Bayern forward Thomas Muller. "We would have liked to have a bit more flowing game and we also made mistakes with possession.
"But we had the better goal chances so overall it was a deserved victory. At the end of the day we won the game and we are back in the mix."
Dortmund, who suffered their first league defeat of the season on Tuesday after losing 2-1 at promoted Fortuna Duesseldorf, are on 39. Leipzig are fourth on 28.
Bayern were far from their best and both teams hit the woodwork in the first half before the in-form Gnabry had to be taken off injured.
The hosts were no real threat for much of the second half, with Robert Lewandowski isolated up front.
Their best chance came in the 79th minute when Joshua Kimmich headed goalwards from a metre out, but his effort was blocked by keeper Peter Gulacsi, who had sprinted back from the other side of his goal.
The Hungarian, however, could do nothing when Ribery drilled in with seven minutes remaining.
The winger, who is in his last season in Munich, has lost his starting spot to Gnabry this season.
Both sides ended the game with 10 men after Leipzig's Stefan Ilsanker was sent off for a reckless foul on Thiago Alcantara in stoppage time and Bayern's Renato Sanches followed suit with a second booking for pushing him in the ensuing melee.