Siena's win sees the robur move to within a couple of points of safety, though Palermo -- having still not won a single league game since November -- stay five points adrift, rock bottom of the table.
The rosanero made the more positive start to the game, and Andrea Dossena's first-time effort from the edge of the box forced Gianluca Pegolo into a diving stop inside three minutes. Siena gave Pegolo's opposite number, Stefano Sorrentino, an early save to make too, with the ex-Chievo keeper making a good stop on an Alessandro Rosina header.
Palermo continued to look the better side, and Fabrizio Miccoli's corner found the head of Mauro Boselli in the box after 25 minutes, though his attempt was well saved by Pegolo. Both teams were getting plenty of crosses into the area, though struggling to get onto the end of them.
That was no more evident than with a little over 10 minutes of the half remaining, when Alessandro Rosini slid in at the back post to try and beat a perfect low cross, though he didn't arrive in time to find the back of the net.
Palermo took the lead on the stroke of half time through an Anselmo, though he got a big chunk of help from Siena defender Christian Terlizzi. A corner came in and Terlizzi headed the ball against his own post, leaving the Brazilian with a simple tap-in for 1-0.
However, they had a disastrous start to the second half, when some equally bad defending saw Sorrentino tangle with centre-back Muñoz, leaving the ball to bounce right through for an open Innocent Emeghara, who slotted into an empty net.
Things went from bad to worse 20 minutes later when Emeghara was tripped in the box by Steve Von Bergen, with Rosina stepping up to convert the resulting penalty. Despite rattling the post twice before the final whistle, Palermo had no response. Their ultras were left to symbolically tear down their banners in disgust. Serie B beckons.
Palermo (3-4-1-2): Stefano Sorrentino; Santiago García, Steve Von Bergen, Ezequiel Muñoz; Andrea Dossena (Diego Fabbrini 70), Jasmin Kurtič, Egidio Arévalo, Anselmo (Nélson 46); Mauro Formica; Mauro Boselli, Fabrizio Miccoli (Josip Iličić 58)
Siena (3-4-2-1): Gianluca Pegolo; Felipe, Christian Terlizzi (Massimo Paci 79), Jorge Teixeira; Matteo Rubin, Francesco Della Rocca, Adrián Calello, Ângelo; Alessio Sestu (Reginaldo 63), Alessandro Rosina (Francesco Bolzoni 84); Innocent Emeghara
Goals: Anselmo 44 (P) Emeghara 51 (S) Rosina 72 pen (S)