After a relatively uneventful first half, where Kane and Jamal Musiala went close for the hosts, the England international was a whisker away from giving Bayern the lead in the 46th minute when his powerful strike from 20 yards rattled the crossbar.
The 31-year-old then put his side ahead 10 minutes later when he converted from the spot after Anthony Jung handled in the box. Kane should have doubled his tally when slipped through by Michael Olise, but he could only find the side netting.
The home team finally put the game to bed when Leroy Sane turned in fellow substitute Konrad Laimer's pinpoint cross eight minutes from time.
With almost the last kick of the game, Musiala was fouled in the area by a clumsy Jung challenge and Kane scored his 12th penalty goal of the season.
Vincent Kompany's men are now nine points clear of second-placed Bayer Leverkusen, although they do have a game in hand.