Ronaldo, who missed Juventus’ opening two Champions League games after contracting the coronavirus, set up Morata’s second.
Substitite Paulo Dybala got Juventus’ third into an empty net after Ferencvaros goalkeeper Dénes Dibusz failed to control a back-pass. Lasha Dvali then scored an own goal following another error by Dibusz.
Franck Boli pulled one back for Ferencvaros in the 90th.
“We were too complacent in the first half and slowed the tempo too much,” Juventus captain Giorgio Chiellini said. “We did better when pushing after the break and raised the tempo to create chances.
“We shouldn’t kid ourselves, though. There was a big difference in the level of the teams.”
Juventus remained three points behind Group G leader Barcelona, which beat Dynamo Kyiv 2-1. Kyiv and Ferencvaros trail with one point each.
Seven minutes in at Puskás Aréna, Morata used one touch to redirect a cross from Juan Cuadrado, who had run onto a through ball from Leonardo Bonucci.
Celebrating his 100th game with Juventus in all competitions, Morata was just as efficient on the hour mark when he took a cross from Ronaldo and connected with a shot from the edge of the area.