The 19-year-old was a regular starter for Dortmund last season, scoring 13 goals in 43 appearances for the Bundesliga club who finished second behind rivals Bayern Munich.
He signed a deal that would run until 2022 when he moved from Manchester City as a 17-year-old for a reported fee of £8 million in 2017. But now the England international has agreed improved terms.
Sancho has got off to a fast start this season.
The forward scored and registered an assist in Dortmund's 5-1 win in their Bundesliga opener against Augsburg and found the net in their 2-0 victory over Bayern in the German Super Cup on August 3.