The 23-year-old rising star couldn't finish Penn, but he spent most of three rounds beating him up en route to a lopsided unanimous decision victory. The judges scored it for him 30-26, 30-26, 30-27.
By the end, the left side of Penn's face was swollen and he had a cut over his right eye.
Fighting for the first time since ending his brief semi-retirement, Penn could never get his offense going, mostly because MacDonald did a masterful job of fighting at distance with kicks and jabs early. The power followed, as MacDonald spent plenty of time wading in with elbow strikes, head kicks and combinations.
He wobbled Penn in the first round with a left elbow near the fence but couldn't finish. In the second, it was body shots that hurt Penn, as he had him hunched over on two occasions. His strike selection was masterful as he turned the fight into target practice for the final few minutes.
According to FightMetric, he landed 116 significant strikes to just 24 landed by Penn.
Afterward, he stated his preference for his next fight.
"There's a guy who humiliated me a couple years ago and I want revenge," he said. "Carlos Condit, let's do it in March, my home territory. I want to get my revenge."
Condit beat MacDonald in June 2010, authoring a stunning TKO comeback win after MacDonald had captured the first two rounds. He hasn't lost since.
The win made it four straight for MacDonald, who is now 14-1.
Penn is now 16-9-2 after a fight that could prove to be his final time in the octagon.