Palermo managed to secure their top-flight status on the final day of the season after they came out on top in a five-goal thriller against rock-bottom Verona at Stadio Renzo Barbera on Sunday.
The hosts took a 1-0 lead into the break, courtesy of Franco Vázquez's 28-minute opener, but the Gialloblu responded quickly after the restart with Federico Viviani (48') grabbing the equaliser.
Parity lasted just three minutes, however, as Enzo Maresca restored the Rosanero's lead before Alberto Gilardino added a third on 64 minutes, while Eros Pisano pulled another one back for the visitors six minutes from time.
Davide Ballardini's side remained a point clear of 18th-placed Carpi, who went down instead, despite claiming a 2-1 win over Udinese at the Dacia Arena.
The Biancorossi gave themselves hope of beating the drop after a quick-fire brace from Simone Verdi (36' pen, 38') put them in a commanding position at the break. Antonio Di Natale pulled one back from the penalty spot 11 minutes from time to set up a nervy finish for the visitors, although it didn't matter in the end as Palermo condemned them to Serie B.
Elsewhere, Fiorentina secured the final Europa League spot as they came from a goal down to beat Lazio 4-2 at Stadio Olimpico.
La Viola were trailing to Senad Lulic's opener after just two minutes, but they responded through Matias Vecino (31'), Federico Bernardeschi (40') and Cristian Tello (45') to take a 3-1 lead into the break.
Vecino bagged his second goal of the evening on 70 minutes to make the game safe, although Miroslav Klose halved the deficit from the penalty spot four minutes later.
Paulo Sousa's side held off the challenge of Sassuolo to finish fifth, while the Biancocelesti ended the campaign in eighth place.
Meanwhile, Genoa managed to finish in the top-half of the table, despite losing 2-1 to Atalanta at Stadio Luigi Ferraris.
After a goalless first half, Marco D'Alessandro broke the deadlock for Le Dea on 52 minutes, although Leonardo Pavoletti hit back with an equaliser for the hosts six minutes later.
Jasmin Kurtic struck eight minutes from time to clinch the win for Edy Reja's side, who ended up two positions and one point behind the 10th-placed Rossoblu.
Empoli improved on last season's 15th-placed finish as a 2-1 victory over Torino took them to 11th in the standings.
Massimo Maccarone gave the hosts a 12th-minute lead and Piotr Zielinski extended their advantage nine minutes into the second half, although Joel Obi (56') would halve the deficit moments later.
Chievo and Bologna didn't have much to play for and it showed as their clash at Stadio Marc'Antonio Bentegodi ended in a goalless draw.
Rolando Maran's men finished the season with a four-game winless streak which left them in ninth spot, while the 14th-placed Rossoblu failed to win their last three encounters.
Chievo 0-0 Bologna
Empoli 2-1 Torino
Genoa 1-2 Atalanta
Lazio 2-4 Fiorentina
Palermo 3-2 Verona
Udinese 1-2 Carpi