"I'll always be grateful to Dortmund for giving me the opportunity to play first-team football, although I always knew that I would return to England one day," Sancho, a former youth player at United's rivals Manchester City, told the club's website.
"The chance to join Manchester United is a dream come true, and I just cannot wait to perform in the Premier League."
Sancho emerged as United's top transfer target last year, but the clubs could not agree on a fee.
He scored 16 goals and provided 20 assists in 38 games for Dortmund in all competitions in the 2020-21 season, forming a lethal partnership with Norway striker Erling Haaland.
The duo helped Dortmund qualify for the Champions League with a third-place finish in the Bundesliga and won the German Cup.
'Underused' in EURO 2020
Sancho has 22 caps for England since making his debut in 2018 but played only three matches for Gareth Southgate's team at Euro 2020, where they lost in a penalty shootout to Italy in the final.
He was one of three England players who missed their spot-kicks in the final and were subsequently subjected to racist abuse online. The comments prompted a police investigation and brought widespread condemnation.
Sancho's addition will strengthen United's right-wing as Ole Gunnar Solskjaer's team look to challenge for the Premier League title after finishing second last season, 12 points behind champions Manchester City.
They start their new league campaign with a home game against Leeds United on August 14.