The Dutchman sent keeper Roman Weidenfeller the wrong way in the 85th minute, after Franck Ribery was brought down, to lift leaders Bayern to 24 points, four ahead of second-placed VfL Wolfsburg.
“We are very satisfied,” coach Pep Guardiola told reporters at the Allianz Arena after his team avenged their season-opening German Super Cup defeat by Dortmund. “In the second half we played as we should.”
The defeat, which featured two decisive blunders from defender Neven Subotic after he came on for the injured Mats Hummels in the second half, drops the Ruhr Valley club to third from bottom with seven points from 10 games.
“After a good first half we had a visibly less good second where we could not deal with the pressure any more,” said Dortmund coach Juergen Klopp after the ‘Klassiker’ fixture between two of Germany’s biggest clubs.
“We invested a lot in this game so it is even more bitter.”
In a game that lived up to its reputation with both teams hitting the woodwork amid high tempo fare in the opening exchanges — Robben for Bayern and Henrikh Mkhitaryan for Dortmund — it was Germany winger Marco Reus who drew first blood for the visitors in the 31st minute.
Reus, Bayern’s top transfer target, headed in a pinpoint cross from Pierre-Emerick Aubameyang after the Gabon international’s 50-metre sprint down the wing.
The Bavarians had a golden opportunity to level six minutes after the restart but former Dortmund striker Robert Lewandowski fired wide from inside the box.
The Pole eventually snatched a 72nd-minute equaliser, drilling the ball home from the edge of the area after Subotic’s poor clearance landed in his path.
The goal completed Lewandowski’s set of scoring against all 18 Bundesliga teams.
Subotic also tugged desperately at Ribery’s shirt as the Frenchman surged into the box, leading to Robben’s coolly-taken winner.
Elsewhere, Ivan Perisic scored twice as Wolfsburg crushed VfB Stuttgart 4-0 to extend their winning run to five straight league games.
Hamburg SV claimed their first home win of the season, against Bayer Leverkusen, after Rafael van der Vaart converted a first-half penalty in a 1-0 win.
Argentine Franco Di Santo struck twice in Werder Bremen’s 2-1 comeback win at Mainz 05.
It was their first victory of the season on new coach Viktor Skripnik’s league debut and moved them off the bottom of the table.
(Reporting by Karolos Grohmann; Editing by Ian Chadband)