Sancho, 19, fed Spain forward Paco Alcacer for Dortmund's opener just after the break before clinching the victory and his side's first trophy since 2017 with a clinical finish within the final half an hour of play.
"We absolutely wanted to win this match, it was very difficult," said Dortmund coach Lucien Favre.
"Bayern were very strong and had a lot of possession but we defended well and stayed very compact.
"We knew that we had to go on the counter-attack and we did that very well."
Bayern, who pipped Favre's side to the Bundesliga title last season and lifted the German Cup, were without World Cup winning left-back and new signing Lucas Hernandez due to a knee problem.
Dortmund's big name summer arrivals of winger Thorgen Hazard and Julian Brandt, as well as defender Mats Hummels, returning the club after three seasons in Bavaria, were also ruled out due to injuries.
Bayern captain Manuel Neuer said errors proved costly.
"We gave Dortmund the match by making too many mistakes," Neuer said.
"We made the mistakes all on our own, we gave them possession and that's why we conceded the goals."
The home side, who finished second in the league last season, had a good early chance.
Portugal winger Raphael Guerreiro broke down the left flank and cut-back to find captain Marco Reus inside the penalty box.
Reus's effort was then well saved by Neuer after less than a minute of play.
Neuer was in the action once again after a quarter of an hour as he rushed out of his box to close down Alcacer 30 metres from goal. Alcacer beat Neuer to the ball but his shot dribbled past the goal.
Bayern's best opportunity of the first half fell to Kingsley Coman 10 minutes later.
He found himself unmarked in the box but his toe-poke shot was saved by Marwin Hitz low to the right.
Bayern's inability to make the most of the ball in first 45 minutes came back to bite them almost immediately after the break.
Sancho attacked down the left drawing four Bayern defenders with quick step-overs.
The teenager fed striker Alcacer at the edge of the box who beat Neuer with a low shot for a 1-0 lead on 48 minutes.
Dortmund's lead was doubled with 22 minutes to go from a clinical counter-attack.
Sancho was free once again on the right wing, he burst into the box beyond Bayern's back-four and nutmegged the experienced Neuer to make it 2-0.
Influential Sancho left the field with 10 minutes to play after seeming to be hurt following an off-the-field challenge by Joshua Kimmich.
Bayern coach Niko Kovac brought on Portugal midfielder Renato Sanches and France World Cup winner Benjamin Pavard late-on but they were unable to find the goals to retain the title and the early-season bragging rights.
Bayern start the defence of their league title by hosting Hertha Berlin on Friday August 16 and Dortmund play Augsburg a day later.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ