The opening goal of the game came after just 13 minutes as Emile Smith Rowe fired the ball pastDavid de Gea, who was down injured.
The United players protested with the referee but VAR let the goal stand.
Bruno Fernandes capped off a sumptuous team goal to level the scores with a minute left in the first-half.
Cristiano Ronaldo then scored his 800th goal for club and country to put United ahead.
Odegaard went from hero to zero 15 minutes later when he stupidly brought down Fred in the box.
Ronaldo stepped up to score his second of the game to seal all three points for United.
Many predicted a dour battle at Old Trafford but both teams came to win and it was the home side who came out on top.
The Red Devils move up to 7th on the table as Ralf Rangnick takes charge as interim manager for the clash with Crystal Palace on Sunday.
Arsenal remain in fifth after missing the chance to leapfrog West Ham into the top-four.
Speaking after the game, midfielder Fernandes said United were looking forward to a "new beginning".
"Every win is important. It's been hard for us," Fernandes told Amazon.
"Today we got a great win. We can be satisfied because we beat Arsenal. Next game is coming quick so we have to be ready.
"I think he'll come tomorrow. Now is a new beginning and a new start. Every game is a new beginning and a new start."
Need a VPN? Or seeking to switch? Then support Tribal Football by clicking here to sign up with our official partners NordVPN. Not only will you receive the best VPN experience, but also great discounts by signing up via Tribal Football. Thanks for your support!