Colombian striker Duvan Zapata, Uruguayan Lucas Torreira and Italian defender Gian Marco Ferrari all found the net in the second half as Sampdoria maintained their perfect home record in Genoa this season.
Juventus got two goals back in injury time with Gonzalo Higuain scoring from the spot and substitute Paulo Dybala grabbing a second just before the final whistle.
But it was too late as Juventus fell four points behind leaders Napoli — 2-0 winners over AC Milan on Saturday.
« This was an unexpected slap in the face that really made us lose our cool, » said Juventus coach Massimiliano Allegri.
« We should have been patient, even if things weren’t going our way. It’s a long game, you have to stay calm. »
Napoli have 35 points from 13 games, with Juventus on 31 and Roma third on 30 with a game in hand, after beating Lazio in a pulsating Rome derby on Saturday.
Inter Milan can move second ahead of Juventus later Sunday when they host Atalanta.
Allegri took a risk as he rested Gianluigi Buffon and Andrea Barzagli after Italy’s World Cup play-off defeat with Dybala starting on the bench against a Sampdoria side who have made their home ground a fortress this season.
Sampdoria kept Juventus reined in in the first half with Zapata breaking the deadlock when he headed in after 52 minutes with Torreira firing in the second on 71 minutes and Ferrari a third eight minutes later.
Juventus were awarded a penalty after Ivan Strinic fouled Douglas Costa in the box with Higuain getting the visitors first after 91 minutes, with Dybala added the second in the final action of the game.
Juventus conceded just their second defeat of the season after Lazio, in a blow for Allegri’s side as they prepare to face Barcelona in Champions League next Wednesday.
Earlier Luca Rigoni’s first half goal got new Genoa boss Davide Ballardini off to a winning start with a 1-0 victory at Crotone.
Promoted Benevento suffered their 13th defeat in as many games, falling 2-1 to Sassuolo, as Fiorentina were held 1-1 by SPAL.
Lorenzo Insigne washed away his World Cup woes by starring in Napoli’s 2-1 victory over a struggling but spirited AC Milan on Saturday.
The 26-year-old’s goal in the 33rd minute was given thanks to referee Daniele Doveri consulting the video assistant referee.
Insigne also drew a fine save from Gianluigi Donnarumma on the stroke of half-time and laid on Dries Mertens for a simple chance that the Belgian fired right at the Milan stopper.
Substitute Piotr Zielinski sealed the three points with 17 minutes left.
Milan coach Vincenzo Montella remains under pressure despite a strong second-half performance as his side stay seventh on just 19 points, 11 points away from the Champions League placings, after their sixth defeat in 13 games.
Roma beat Lazio in a pulsating Rome derby thanks to goals from Diego Perotti and Radja Nainggolan.
Ciro Immobile pulled one back from the spot with 18 minutes left after Kostas Manolas’ handball was spotted by the VAR, but Roma held out for a huge win over their local rivals.
For Perotti, his 49th-minute penalty and an assist for Nainggolan’s drilled strike was the continuation of a « rebirth » that saw him called up for Argentina for the first time in six years earlier in the month.