He scored twice on his first-team debut against Midtjylland in February and finished the season with eight goals in 18 appearances.
Rashford was selected in England’s 26-man squad for Euro 2016 and scored on his debut against Australia on Friday.
“I am grateful for having the chance to prove myself,” he said.
“To be able to play football at the biggest club in the world means everything to me and my family.”
Rashford’s new contract is thought to be worth £20,000 a week.
United executive vice-chairman Ed Woodward said: “He is still very young and we need to be patient, but he is developing in the right way and we believe he has a great future ahead of him.”
Defender Cameron Borthwick-Jackson, 19, who like his team-mate had a year left on his deal, also signed a new contract that will keep him at the club until 2020.
There is an option to extend both deals – announced three days after new manager Jose Mourinho joined United on a three-year contract – by a further year.
After scoring twice on his United debut in the Europa League, Rashford repeated the feat in his first Premier League game three days later.
He also found the net just 138 seconds into his first senior international appearance, making him the youngest player to score on his England debut.
The teenager was represented in negotiations by family members, with advice from Chris and Wayne Welbeck, brothers of former United forward Danny, who now plays for Arsenal.