Palmer started the race on the medium tyre and was able to go further than his nearest rivals before switching to another set of medium Pirellis.
Making full use of his fresher rubber he pulled off a great move on Marcus Ericsson for the lead.
Such was Palmer's grip advantage he went on to win by over 15 seconds.
DAMS racer Ericsson had taken the lead with a fabulous move on Carlin's Felipe Nasr as the Brazilian exited the pits following his stop.
The pair staged an epic duel for the runner-up spot, with the Swede holding on by the finest of margins.
In a frenetic race, Racing Engineering's Fabio Leimer had a quiet run to fourth, but with points leader Stefano Coletti having a disastrous outing, that equalled a handy points haul.
After a dismal qualifying Coletti's hopes of points were already slim, but they became nil when he tangled with Jake Rosenzweig on the opening lap, which forced him to pit for repairs.
Stephane Richelmi claimed fifth, while Simon Trummer took sixth following excellent strategic work from Rapax, who kept the Swiss driver out until almost the last minute before bringing him in for his fresh tyres. It worked a treat.
MW Arden pulled a similar move with Mitch Evans, who led for quite a while and eventually took seventh.
Eighth place, and pole for Sunday's reversed-grid race, went to Nathaniel Berthon.
After dominating qualifying, it was an awful race for Russian Time. Tom Dillmann made a poor start from pole and dropped to sixth, but neither he nor Sam Bird had any race pace. Bird took 10th, Dillmann 20th.