Diego Perotti scored twice and set up another as Roma ended Juventus' long unbeaten home Serie A run with a 3-1 win just six days before the Bianconeri's crucial Champions League tie with Lyon.
Gonzalo Higuain had put Juve in front in Saturday's Serie A finale but Perotti set up Nikola Kalinic's equaliser and put Roma ahead from the penalty spot before half-time at the Allianz Stadium.
The winger gave fifth-placed Roma a cushion early in the second half as Juventus succumbed to a first home Serie A defeat since a 1-0 reverse to Napoli in April 2018 – a run of 39 games.
It means champions Juve, who rested several players including Cristiano Ronaldo, finish the campaign with back-to-back losses before aiming to overturn a last-16 deficit against Ligue 1 Lyon.
Higuain turned in from close range just six minutes in after pouncing on Adrien Rabiot's flick from Federico Bernardeschi's corner.
Juve were undone by a corner themselves, though, as Kalinic nonchalantly converted Perotti's delivery.
Gianluca Frabotta - making a first Juve appearance - dragged wide, while fellow youngster Riccardo Calafiori rifled home at the other end, only for the ball to have gone out of play from the preceding corner.
Calafiori then drew the foul from Danilo for Perotti's penalty to find the bottom-right corner and put Roma ahead.
Perotti stretched the lead seven minutes into the second half, sweeping home inside the area – via a deflection off Merih Demiral – after collecting Nicolo Zaniolo's perfectly weighted pass.
Aaron Ramsey hit the post with a sweet effort and Higuain nearly found the bottom-left corner with a 20-yard strike.
But Roma had other chances themselves, with Davide Zappacosta shooting narrowly wide and Wojciech Szczesny made a couple of decent saves as Juve faltered before a huge Champions League showdown.
What does it mean? Juve out of form for Lyon
That Juve ultimately cantered to a ninth straight title and still only finished one point above Inter tells a story about a side who won the trophy but have often underwhelmed this term.
Maurizio Sarri's men won just two of their final eight games and significant improvement is needed if they are to get past Lyon and into the Champions League quarter-finals.
It was a fine outing for Perotti, whose corner – while poorly defended by Juve – was there to be attacked. His cool penalty then preceded more calm for his third goal, which was set up by the equally classy Zaniolo.
Danil-woe for Juve
There were several poor performers for Juve but full-back Danilo typified a shoddy outing, giving away the penalty for Roma to move ahead and generally being given a torrid time by Perotti.
All eyes are on the Champions League and Lyon for Juve now, while Roma have a one-legged tie in the last 16 of the Europa League against Sevilla to prepare for.