Serie A Wrap: Destro seals top-three finish
The Italian forward is enjoying a successful season and did his chances of a late run into Italy's FIFA World Cup squad no harm after a performance that puts Rudi Garcia's men within five points of Juventus.
Destro's first came just after half an hour thanks to good work from Gervinho and he struck again 10 minutes after the break to finish off a superb counter-attack.
He sprung the offside trap to complete his hat-trick 17 minutes from time and though Mauricio Pinilla scored late on from the spot, it wasn't enough to deny Roma a first win in Cagliari since October 1995 - excluding a 3-0 win they were awarded last year without playing.
Napoli are now 12 points further back in third after Marco Parolo's eighth of the season condemned them to a 1-0 defeat at Parma.
The result means Juventus can secure a top-two finish, and an automatic Champions league spot, with victory over Livorno on Monday, while Parma are now level on points with Inter who are in the final Europa League place.
Vincenzo Montella's Fiorentina responded after two winless games by beating Udinese 2-1 and strengthening their hold on the UEFA Europa League places.
They went ahead in the 25th minute through Juan Cuadrado's sixth league goal of the season and Gonzalo Rodriguez doubled the advantage from the spot in the second half.
Udinese caused late panic with a Bruno Fernandes strike but Fiorentina held on to move within nine points of third-place Napoli.
Meanwhile, Catania's 2-1 defeat to Torino resulted in Rolando Maran's dismissal as coach.
Gonzalo Bergessio gave the home side the perfect start after two minutes but Alexander Farnerud and Ciro Immobile struck late on to condemn the league's bottom side to a fifth straight defeat and it led to Maran's second sacking of the season by Catania.
Lazio moved to within two points of Inter after defeating Sampdoria 2-0 despite playing more than 30 minutes with 10 men.
Antonio Candreva gave the hosts a lead just before half-time but they were a man down within 12 minutes of the second half after Lucas Biglia was sent off for his second booking.
But it didn't derail Edoardo Reja's side, who clinched their second consecutive win with a Senad Lulic goal.
Lowly Sassuolo sprung a shock by winning 2-0 at Atalanta to end their six-game winning streak.
Nicola Sansone struck in each half to give Sassuolo a real chance of survival, who are now three points from safety.