Published: 2019-12-08 04:05:00 BdST
Juve, who had gone their first 19 games under new coach Maurizio Sarri unbeaten in all competitions, went ahead with a Cristiano Ronaldo goal in the 25th minute but Luiz Felipe levelled for Lazio in first-half stoppage time.
The game turned in the 69th minute when Juve right back Cuadrado clattered into Manuel Lazzari after he was sent clear by Luis Alberto's pass and the referee dismissed the Colombian after viewing the incident on the pitchside monitor.
Five minutes later, Sergej Milinkovic-Savic latched on to Luis Alberto's cross to put Lazio in front. There was further drama when Lazio forward Ciro Immobile had a penalty saved by Wojciech Szczesny who also blocked the rebound and substitute Felipe Caicedo scored a third goal in stoppage time.
Juventus stayed second, two points behind Inter Milan, with 36 points from 15 games while Lazio, who are third, closed the gap on their opponents to three points after their seventh successive league win.