Cristiano Ronaldo’s sixth goal of the current Serie A campaign looked like it was enough to give Juventus a victory, but just as he did against Torino, Caicedo was decisive at the death.
The result leaves Andrea Pirlo’s men third in the Serie A table on 13 points, while Lazio are now joint fifth, though have just two wins in their last six matches.
Pepe Reina was in action early on for Lazio, though saves from Ronaldo and Adrien Rabiot were relatively simple.
Juventus took the lead through Ronaldo just 15 minutes into the game when Juan Cuadrado got to the goal line and crossed for the No.7 who poked into an empty net from close range.
Lazio went close with a Sergej Milinkovic-Savic header just out of Vedat Muriqi’s reach whole Joaquin Correa also tested Wojciech Szczesny.
As the half wore on it was Ronaldo who could have added to his talley, first shooting just wide, then rattling the post from the edge of the area.
Both sides struggled to create much as the second period got underway, though Adam Marusic got on the end of a looping Milinkovic-Savic cross, but headed straight at the Juventus goalkeeper.
Then just as it looked like Juventus were set for three big points, Caicedo collected a Correa pass in the box, turned Leonardo Bonucci, and blasted into the net.