Despite a number of chances it took Juventus until the 37th minute to double its tally when Ronaldo drove home Higuain’s through-ball.
Bonucci headed in the third on the stroke of halftime.
Udinese scored a stoppage-time consolation through Ignacio Pussetto.
Teenager Dušan Vlahović scored a stunning solo goal in stoppage time to possibly save the job of Fiorentina coach Vincenzo Montella and add to Inter’s miserable week.
The 19-year-old Vlahović raced from inside his own half before hitting the ball across the face of goal and into the far top corner.
It ended a run of four successive defeats for Fiorentina.
“It’s an important draw,” Montella said. “The team had a great game, losing would have been unfair. There was a desire to have a great performance … It was a great goal from Dusan. I’m happy for him, he will go far because he has the desire to work and to suffer. We are working on this kid. I put my faith in him last year too.”
It was the third time in four matches against Inter that Fiorentina has scored a stoppage-time equalizer.
Former Fiorentina hero Borja Valero had scored the opener in the eight minute, gathering Marcelo Brozovic’s throughball and turning Nikola Milenkovic inside out before shooting into the near bottom corner from close range.
Valero, who joined Inter in 2017 after five years at Fiorentina and has the coordinates of the city tattooed on his arm, didn’t celebrate and instead raised his arm in apology.
Lautaro Martínez thought he had doubled Inter’s lead with his sixth goal in as many matches but it was ruled out as Romelu Lukaku had been marginally offside in the buildup.
Home goalkeeper Bartlomiej Dragowski also pulled off a great save to deny Lukaku as Inter failed to bounce back from its defeat to Barcelona and becoming the only Italian team not to progress to the last 16 of the Champions League.
“Just like against Barcelona, we got less than we deserved,” Inter coach Antonio Conte said. “It’s disappointing because today the team responded well after Tuesday’s defeat.
“It’s a process of growth and we have to all be patient, because we’re still not in the conditions to win every match just because we’re called Inter.”
Hellas Verona fought back from three goals down to draw 3-3 against Torino.
Torino was 3-0 up after an hour but all three Verona substitutes scored in a 15-minute spell to secure an improbable point.
Atalanta was surprisingly beaten 2-1 at Bologna, which had defender Danilo sent off two minutes from time.
Atalanta remained sixth but fell four points behind the Champions League spots after Roma fought back from a goal down to beat bottom-place Spal 3-1.
Cagliari can move back into fourth if it wins at home to third-place Lazio on Monday.
Rafael Leao hit the woodwork twice late on but AC Milan drew 0-0 against Sassuolo.
More AP soccer: https://apnews.com/Soccer and https://twitter.com/AP_Sports