WATCH: ‘We love you Nosi’, nanny receives new car from family
Sergio Floccari celebrates his winner against Juventus . AFP/Isabella BONOTTO
Massimiliano Allegri’s side had needed just a point to claim a 35th Scudetto with a record six games to spare and Napoli a distant second.
Kean opened for the scoring for the visitors when the 19-year-old stuck his foot out to direct a Juan Cuadrado effort into goal after half an hour in Ferrara.
But Kevin Bonifazi (49) and Sergio Floccari (74) came back with precious goals which eased SPAL’s fight for top-flight football next season.
Juventus have a 20-point advantage on Napoli and can still seal the title on Sunday if Carlo Ancelotti’s side fail to win at bottom club Chievo.
No team has ever won the title so early.
The previous best was five games to spare achieved by Torino in 1947-1948, Fiorentina in 1955-1956 and Roberto Mancini’s Inter Milan in 2006-2007.
Allegri rotated his squad with an eye towards Tuesday’s Champions League quarter-final, return leg fixture against Ajax in Turin, after a 1-1 draw in Amsterdam.
Portuguese star Cristiano Ronaldo was rested after returning from injury to score in the first leg against Ajax, with forwards Federico Bernardeschi and Mario Mandzukic also starting on the bench.
Mattia Perin replaced Wojciech Szczesny in the Juventus goal with Kean getting his second start alongside Paulo Dybala up front.
Cuadrado and Andrea Barzagli returned from lengthy injury lay-offs with youngsters defender Paolo Gozzi, 17, and midfielder Grigoris Kastanos, 21, given their debuts.
Kean opened after half an hour with Joao Cancelo pushing through the right with his shot going wide before the teenager stuck out his foot to redirect the ball home.
It was the Italy international’s fourth consecutive Serie A match with a goal, and sixth in as many games.
But Bonifazi pulled SPAL level, connecting with a corner, to head past Perin.
Former Arsenal forward Stephy Mavididi, 20, came on for Kean midway through the second half for his debut before Floccari fired in the winner after 74 minutes.
Bernardeschi also came off the bench in place of Barzagli, as Allegri pushed for a point, with ten minutes to go.
But SPAL held on to move up to 13th, seven points above the drop zone, having already beaten Champions League-chasing Lazio and Roma.
It was just the second defeat of the season for Juventus, after falling 2-0 to Genoa on March 17.
Download our app and read this and other great stories on the move. Available for Android and iOS.