Cristiano Ronaldo scored his 100th goal for Juventus to help Andrea Pirlo's side beat Sassuolo 3-1 and keep their hopes of a top-four Serie A finish alive.

It was a night of heroic Juventus veterans at Mapei Stadium, where Gianluigi Buffon saved a first-half Domenico Berardi penalty before Adrien Rabiot scored to give the visitors the lead.

Ronaldo clinched his century just before the interval, becoming the first Juve player to score 100 goals in his first three seasons at the club, and Paulo Dybala matched his feat by netting his 100th for the side in the 66th minute.

The result was vital after Juve's 3-0 defeat at home to Milan, with Napoli one point ahead of them in the table in the coveted fourth Champions League qualifying spot with two games left to play.

Rabiot's careless defending led to Leonardo Bonucci's foul on Giacomo Raspadori to concede a 16th-minute penalty, but Berardi's spot-kick was parried away by the diving Buffon, who this week announced he will leave the club at the end of the season.

Rabiot atoned for his error after 28 minutes when the Sassuolo defence backed away as he dribbled to the edge of the box and drove a raking shot into the far corner of the net.

On the cusp of half-time, Rabiot's long pass was deftly controlled by Ronaldo, who used his second touch to beat Andrea Consigli with a low shot into the corner of the net.

But Juventus never looked comfortable and they were undone by a neat one-two between Manuel Locatelli and Raspadori, with the latter beating Buffon low in the corner to give the hosts hope.

That hope was all but extinguished when Dejan Kulusevski's pass put Dybala clean through on goal and the Argentina international chipped Consigli to wrap up three vital points.

What does it mean?

Two huge games to go Juventus have two Serie A matches to save their season, with speculation linking Ronaldo with a move away and Pirlo with the sack should they fail to qualify for next season's Champions League.

They face Inter at home and Bologna away, either side of a Coppa Italia final against Atalanta that Pirlo may be wishing they had never reached.

Ronaldo shines in Juve's moment of need

Ronaldo almost scored his second of the night when he hit the post late on with one of four shots he attempted throughout the game, and he also contributed two key passes.

Berardi must do better

After having his penalty saved by Buffon, Berardi attempted another six shots on goal but failed to hit the target with any of them on a frustrating night for the Sassuolo captain.

Key Opta facts

- Dybala has become the first non-European player to have scored 100+ goals in all competitions for Juventus (excluding those who have played for Italy). 

- At the age of 43, Buffon is the oldest goalkeeper to have saved a penalty in Serie A, his first in the competition since August 2017 (Farias v Cagliari). 

- Juventus have conceded goals in 13 games in a row (all comps) for the first time since 1999, under Carlo Ancelotti. 

- Raspadori (February 2000) is the youngest player to have scored more than five goals in Serie A this season (six). 

What's next?

Juventus entertain champions Inter on Saturday, while Sassuolo travel to relegated Parma a day later.