Sergej Milinkovic-Savic and Felipe Caicedo netted as Lazio came from behind to shock Juventus 3-1 at home and inflict Maurizio Sarri's first defeat as Bianconeri coach.

Juve, held 2-2 at Sassuolo last time out, took the lead through Cristiano Ronaldo but was pegged back before the break by Luiz Felipe's header in a gripping Serie A encounter.

Juan Cuadrado's red card opened the door for Lazio and it charged through it at the Stadio Olimpico on Saturday, Luis Alberto setting up Milinkovic-Savic for a superb strike to edge in front.

There was time for more drama, though, Juve goalkeeper Wojciech Szczesny saving Ciro Immobile's penalty, and Caicedo added a third deep in added time to leave Inter Milan two points clear at the top.

Paulo Dybala almost scored an audacious opener direct from a corner, Thomas Strakosha desperately batting the ball away from his line, but Juve broke the deadlock in the 25th minute.

Dybala was involved again, feeding Ronaldo, and the Portugal forward then arrived to convert Rodrigo Bentancur's cross after playing the midfielder into space on the right wing.

Lazio responded well, Immobile missing a good chance before the host levelled on the stroke of half-time, Luiz Felipe rising in the box to meet Luis Alberto's superb left-wing centre.

Strakosha made amends for a huge error in the 65th minute, his loose pass presenting Dybala with a chance to shoot before the goalkeeper recovered to block, then momentum swung to the host. 

Cuadrado was initially booked for bringing down Manuel Lazzari as he ran through on goal, but referee Michael Fabbri upgraded the yellow card to red after watching replays on pitchside monitors.

That proved a key moment as Luis Alberto combined with Milinkovic-Savic for a terrific goal in the 74th minute, with Lazio then handed a golden chance to make the points safe.

Szczesny brought down Joaquin Correa in the box, but Immobile's weak penalty was parried and the goalkeeper's reflexes brilliantly denied the Italy striker on the rebound.

That kept Juve in the hunt, and they threw everything at Lazio in the closing stages, but Caicedo scored on the counter in the 95th minute to end the Bianconeri's record as the last unbeaten team in Europe's top five leagues.


What does it mean? Juve drops points again

A haul of 36 points from 15 games would ordinarily see Juve enjoying a comfortable cushion atop the table, but Inter's superb start has put Sarri's side under huge pressure and it crumbled in the capital.

With the champions of England and Germany, Manchester City and Bayern Munich, also beaten earlier in the day, a changing of the established elite could well be happening across Europe.

Lazio, third and five points behind Inter, will consider itself part of the title race after a seventh straight league win - its first home success over Juve in the league since 2003.

Milinkovic-Savic proves worth

Previously considered one of the most in-demand players in world football, Milinkovic-Savic's profile has slipped a little in recent months. His sublime winner will catch the attention of scouts all over the continent once more.

Immobile draws rare blank

Though he perhaps should have scored in the first half, Juve mostly succeeded in keeping Lazio's main goal threat quiet. Immobile had scored in nine straight league games, sitting well clear at the top of the Serie A scoring charts, but this was a rare off-day for the striker. He was fortunate a missed penalty did not cost his side a massive victory.


What's next?

Juventus goes to Bayer Leverkusen in the Champions League on Wednesday, though its qualification is already secured, with Lazio at Rennes in the Europa League the following day. 

A suddenly reeling Juve host Udinese in Serie A next weekend, with Lazio away to Cagliari a week on Monday.