The 21-year-old joins the Premier League club after four years in the Bundesliga with Dortmund, where he won the German Cup in his final season and scored 50 goals across 137 appearances.
Manchester City retain a sell-on clause for their former youth-team player, whose contract in Germany was due to run until the summer of 2023.
“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 told United’s official website.
“The chance to join Manchester United is a dream come true and I just cannot wait to perform in the Premier League.
“This is a young and exciting squad and I know, together, we can develop into something special to bring the success that the fans deserve.
“I am looking forward to working with the manager and his coaching team to further develop my game.”
United had a long-standing interest in Sancho and attempted to sign him last summer, but were put off by Dortmund’s £108m valuation.
Dortmund’s asking price for Sancho dropped to £85m by the start of this summer, with United able to negotiate a further £12m drop in the valuation.
Sancho becomes Ole Gunnar Solskjaer’s second signing ahead of the new season following the addition of goalkeeper Tom Heaton earlier in the transfer window.
Solskjaer added: “Jadon epitomises the type of player I want to bring to the club, he is a forward player in the best traditions of Manchester United.
“He will form an integral part of my squad for years to come and we look forward to seeing him blossom.
“His goals and assists records speak for themselves and he will also bring tremendous pace, flair and creativity to the team.”