Robert Lewandowski came back to haunt Borussia Dortmund again as Bayern Munich won 1-0 at Westfalenstadion to restore their 10-point Bundesliga cushion.
The Polish forward, who swapped Dortmund for the German champions last summer, headed home on 36 minutes to decide the game as he did in October's reverse fixture.
Lewandowski combined with strike partner Thomas Muller before chipping over home goalkeeper Roman Weidenfeller on 11 minutes, only for the offside flag to be raised.
It was the same pairing who forged Bayern's goal as Lewandowski released Muller for a shot which was saved by Weidenfeller, before heading the rebound home himself.
With Bayern missing injured duo Arjen Robben and Franck Ribery and Dortmund languishing in 10th in the table, Der Klassiker lacked the spark of previous seasons and chances were otherwise few and far between in the opening 45 minutes.
Jurgen Klopp's men were more of a threat after the break, although it was Munich mistakes which gifted them their best chances as Marco Reus fired wide and Pierre-Emerick Aubameyang blazed over when he should have squared to his teammate.
After wasting a chance to double their cushion when Lewandowski scuffed a cross from Muller when well placed in the area, the hosts were forced to hang on in the final stages.
Reported Manchester United target Mats Hummels squandered an 84th-minute chance following a poor first touch, and Manuel Neuer saved well from Reus's late free kick to ensure that Bayern kept second-placed Wolfsburg at a distance.