Napoli substitute Manolo Gabbiadini converted a penalty with the last kick of the game to salvage a 3-3 draw at Fiorentina which was inspired by a superb display from Federico Bernardeschi. Bernardeschi scored two goals and provided the third for Mauro Zarate as Fiorentina twice came from behind to lead 3-2 in a game which produced stunning goals, mistakes, drama and controversy. In other games, second-placed AS Roma came from behind to beat Chievo 3-1 and Cagliari fought back from 3-1 down for a 4-3 win over Sassuolo, which played the second half with 10 men. Roma's win took it onto 38 points, four behind leader Juventus which played AC Milan in the Italian Supercup in Doha Friday. Napoli is third with 35, one ahead of Lazio. Lorenzo Insigne gave Napoli a deserved lead when he beat Ciprian Tatarusanu with a vicious dipping shot from long range in the 25th minute. Bernardeschi levelled seven minutes after the re-start with a free kick which went through the middle of the Napoli wall and caught Pepe Reina offguard. Napoli went back in front when Fiorentina defender Nenad Tomovic failed to control a straightforward pass and let in Dries Mertens who scored his eighth league goal in three games with a clinical finish in the 68th minute. One minute later, Bernardeschi collected the ball in midfield and unleashed a wicked long-range left-foot shot which bounced once and went in off the post. The 22-year-old was in inspired form and chipped a delightful ball over the top of the Napoli defense into the path of Mauro Zarate, who met it first time and side-footed the ball past Reina with nine minutes left. Fiorentina was on the point of celebrating a famous win until Carlos Salcedo clumsily tripped Mertens and Gabbiadini, who has been struggling for form, calmly slotted his spot kick into the bottom corner. Roma suffered a fright when Jonathan de Guzman headed Chievo in front at the Stadio Olimpico but Stephen El Shaarawy curled home a free kick to level in first-half stoppage time to calm their nerves. In the second half, Edin Dzeko tapped in his 13th goal of the season and substitute Diego Perotti converted a penalty to ground the Flying Donkeys, as Chievo is known. Injury-ravaged Sassuolo's topsy-turvy season took another twist at Cagliari. Lorenzo Pellegrini put it 2-1 ahead in the 32nd minute but was sent off almost immediately afterwards for a shocking two-footed challenge. Nevertheless, Francesco Acerbi increased Sassuolo's lead from a penalty just before the hour. Things quickly began to go wrong, however, as Marco Borriello pulled one back, Diego Farias equalized with a deflected shot and then grabbed the winner for the Sardinians, with their last three goals all coming inside 14 dramatic minutes. Cristiano Biraghi converted a stoppage-time penalty to give basement club Pescara a 1-1 draw at Palermo while Andrea Belotti scored his 13th goal of the season in Torino's 1-0 win over Genoa. Barca to face Athletic Bilbao again Holder Barcelona will face familiar opponent in the shape of Athletic Bilbao in the last 16 of the Copa del Rey after Friday's draw paired the sides together. Sevilla has been drawn against Real Madrid, with the first leg at the Santiago Bernabeu, in a repeat of the UEFA Supercup at the start of this season. Atletico Madrid will meet Las Palmas, while Villarreal, currently fourth in La Liga, have been drawn against Real Sociedad. One second-tier team is guaranteed to reach the quarterfinals after Alcorcon and Cordoba were drawn together. - Agencies