The Slovenia international scored early in the piece to condemn Inter to their third league defeat in four and all but end their quest for Champions League qualification
Josip Ilicic's fifth goal in as many matches proved to be the difference, with the playmaker taking advantage of a Matias Silvestre mistake to score the winner in only the 10th minute.
Inter captain Javier Zanetti suffered an Achilles injury early in the first half to add to the number of players the Milan outfit have lost to injury since the turn of the year.
After a bright opening, the hosts had the first sight of goal when Fabrizio Miccoli fired Santiago Garcia's pull back straight at Samir Handanovic while Zanetti tested Stefano Sorrentino from distance for the visitors.
The frantic start to the match was capped by the opening goal, with the breakthrough stemming from an error from former Palermo defender Silvestre.
The centre-back failed to clear a long ball forward, allowing Miccoli to lay the ball back for Ilicic, and the Slovenia attacker made no mistake with a placed effort from the edge of the area.
The pressure continued on the visitors' goal, and Handanovic had to be alert to keep out a Miccoli free kick from a tight angle. With skipper Zanetti having to be stretchered off, Andrea Stramaccioni's side were struggling to deal with Palermo's swift counter-attacks.
Miccolia and Garcia were in particular causing problems, though it was another flair player who almost provided the equaliser as Ricky Alvarez fired wide after the ball found him near the penalty spot.
Despite Miccoli again testing Handanovic, the San Siro outfit had the better of the closing stages as Tommaso Rocchi twice went close.
His first effort was weak and straight at Sorrentino before he wasted Inter's best chance of the opening period when he headed over after a cross was floated in from the right.
Stramaccioni had obviously had some harsh words for his charges at the break, and they began the second half well, with Jonathan seeing his powerful effort from distance parried round the post by Sorrentino.
The Nerazzurri continued to press, though they were largely wasteful in the final third, and they were almost made to pay after some individual brilliance from Miccoli.
The striker was fed the ball on the edge of the area, and he proceeded to tee himself up before volleying towards the top corner. He was only denied by an equally spectacular save from the impressive Handanovic.
As the match entered its final 20 minutes, Alvarez finally came to life and gave Inter hope. The tricky forward fired just over the top with an outrageous effort from 35 yards before he jinked through the home defence only to fire over once in sight of goal.
The goalkeeper was again called into action when substitute Abel Hernandez broke clear, and though Inter huffed and puffed in the final stages, they couldn't create the opening that would have seen the points shared.