England international Sancho curled a superb shot into the top corner in the fifth minute and added another with a quick break on the stroke of half=time after Haaland, back from injury, powered into the box and flicked the ball past keeper Peter Gulacsi.
Dortmund were brutally efficient in the first half, scoring with each of their three shots on target.
"The way we played today and the past weeks we have battled our way back into the season," Dortmund captain Marco Reus said. His team have won their last five league games to move back into the top four with two games remaining.
"Today we were very good in the first half. In the second half we had a bit of luck but we have the trophy now and that's what matters," Reus added.
Leipzig launched a late attempt at a comeback, pulling a goal back with a thundering drive from Dani Olmo in the 71st minute and coming agonisingly close to a second four minutes later after a mistake from Sancho.
Sancho, likely to leave Dortmund at the end of the season, wasted a golden chance to complete his hat trick before Norway international Haaland, also a major transfer target, rifled in his second goal.
"I'll look back at this and I am going to be very disappointed for not scoring a hat trick," Sancho said. "We knew it was going tough but it was a long time coming. We should be winning trophies season after season."
It was Dortmund's fifth German Cup triumph and their first since 2017 while Leipzig missed out again on winning their first silverware.
Leipzig, beaten 3-2 by Dortmund in the league on Saturday, have lost in the final twice in the last three years and their coach Julian Nagelsmann is departing for Bayern Munich next season.
"Obviously, the feelings are not good a the moment when you lose a final," Nagelsmann said. "But I am proud of the team even if the result was 4-1. We played a very good second half."