The 21-year-old’s new deal also contains the option for United to trigger a further one-year extension.
With his new contract, Rashford will earn around £200k per week, according to Sky Sports News.
After Ole Gunnar Solskjaer took charge in December, Rashford has featured regularly under the former United striker’s starting lineups and was named as the Premier League player of the month for January 2019.
Rashford, who made his debut for United in a Europa League game in February 2016, has scored 50 goals and made 26 assists in 184 appearances in all competitions for his hometown club.
The England international made his first Premier League start against Arsenal that same season, scoring twice in a 3-2 win at Old Trafford.
The academy product, who is now an England regular with 32 caps, has played for his boyhood team since the age of seven.
Rashford said: “Manchester United has been everything in my life since I arrived here at the age of seven. This club has shaped me, both as a player and as a person, so it is such a privilege every time I get the opportunity to wear the shirt.
“I want to thank Ole and his staff for everything they have done for me; they are the perfect group of coaches to learn from as I continue my development and look to push on to the next level.
“I will be giving everything I have to help get this club back to where it belongs and deliver the success that our fans deserve.”
His manager Ole Gunnar Solskjaer said: “Marcus is one of the most talented English players of his generation. He is an outstanding player; blessed with natural pace and energy.
“Marcus is a shining example of the talent that our Academy produces and his upbringing means that he truly understands what it means to play for Manchester United.
“Despite being only 21 years old, Marcus already has great experience. He has a fantastic future ahead of him with the club and I am delighted that he has signed a new contract.”