Federico Gatti scored a last-gasp winner to send Juventus top of Serie A with a battling 2-1 victory at Monza.

The hosts had looked like rescuing a point when Valentin Carboni struck at the start of stoppage time to cancel out Adrien Rabiot’s opener.

But Juve would strike back deep into added time as Gatti’s effort sealed the three points to take Massimiliano Allegri’s side top ahead of this weekend’s fixtures.

Dusan Vlahovic saw an early penalty saved by Michele Di Gregorio after Andrea Cambiaso had been upended in the box.

The visitors would not be kept at bay for long, though, as Rabiot broke the deadlock in the 12th minute when he headed home a corner.

Allegri’s men could not build on their lead however, with Di Gregorio rarely tested.

The Monza goalkeeper kept out a driven Rabiot effort with ease while Gatti fired over from distance with chances at a minimum.

Monza’s Valentin Carboni celebrates his late goal against Juventus

Monza thought they had made Juve pay for not doubling their advantage when substitute Carboni scored.

His ball into the box evaded everyone and drifted in past Juve stopper Wojciech Szczesny as the home side scored with their first effort on target of the night.

Despite their celebrations, Monza could not hold on for a point as, with Juventus throwing men forward, Rabiot crossed low for the unmarked Gatti.

The defender fluffed his lines with his first chance but thrashed the ball home at the second attempt to seal a dramatic win for the visitors.

The victory takes Juventus top of the table, moving a point clear of Inter Milan, who face a tough trip to fourth-placed Napoli on Sunday evening.