Torino had taken a comfortable lead at the Stadio Bentegodi after Christian Ansaldi scored a double with Alex Berenguer also on target for the visitors.
But the hosts hit back with three goals after 69 minutes from players who all came off the bench. Ansaldi broke through after 36 minutes with Berenguer, adding a second ten minutes after the break. Ansaldi then volleyed in his second just after the hour, as Torino looked on course for a third consecutive win for the first time this season.
But the match swung Verona's way after Giampaolo Pazzini converted a penalty on 69 minutes after Gleison Bremer was deemed to have used his elbow to block the ball. Pazzini was then involved in the second with Valerio Verre smashing in off a rebound. Mariusz Stepinski added a third pounching on a defending error from Torino's Ola Aina to finish off.
Torino are ninth with Verona two points behind in 11th position, in the hosts' final match before the winter break. Torino next play SPAL on Saturday.
Serie A leaders Inter Milan travel to Fiorentina later on Sunday with champions Juventus, two points behind before their game at home against Udinese.