Juventus are fast losing ground in the Serie A title race as their third draw in five matches left them frustrated by Verona.
Juve had most of the game and Juan Cuadrado had the best chance of the first half, lashing his shot off the crossbar from inside the area.
Alvaro Morata then had a goal harshly ruled out for offside - his lobbed finish was sublime and deserved to count - and Verona took a shock lead in the second half.
Favilli wandered into empty space to slot home past Wojiech Szczesny and then Juve went on to dominate the final 30 minutes of the game.
Dejan Kulusevski struck a deserved equaliser, coming of the bench to weave in and out before slotting home, before Paulo Dybala had chances to win it.
The Argentine cut inside to lash a shot off the underside of the crossbar, while in injury time his shot was saved by Marco Silvestri as Verona held on for a point.
AC Milan can now go six points clear of Juve with victory at home to Roma on Monday evening.
Juventus 1-1 Verona: Player Ratings
Yellow card for Davide Faraoni.
Substitute in, Giacomo Vrioni.
Substitute out, Aaron Ramsey.
Yellow card for Dejan Kulusevski.
Assist given by Álvaro Morata.
Goal by Dejan Kulusevski.
Substitute in, Gianluca Frabotta.
Substitute out, Leonardo Bonucci.
Yellow card for Alan Empereur.
Substitute in, Antonín Barák.
Substitute out, Andrea Favilli.
Substitute in, Dejan Kulusevski.
Substitute out, Federico Bernardeschi.
Assist given by Mattia Zaccagni.
Goal by Andrea Favilli.
Yellow card for Darko Lazović.
Substitute in, Andrea Favilli.
Substitute in, Giangiacomo Magnani.
Substitute out, Nikola Kalinić.
Substitute out, Federico Ceccherini.
Substitute in, Ivan Ilić.
Substitute out, Adrien Tameze.
Yellow card for Ronaldo Vieira.