Antonio Cassano put the hosts in front in the 33rd minute when Milan keeper Christian Abbiati could only get a hand to his close-range header after it crossed the goal-line.
Striker Giampaolo Pazzini continued his blistering form since joining from Fiorentina in January to extend the lead six minutes after the break.
He skillfully shrugged off Daniele Bonera's tackle to fire past Abbiati and notch his fifth goal in as many games for Sampdoria.
Brazilian forward Alexandre Pato pulled one back ten minutes from time with a superb header from Marek Jankulovski's left-wing cross.
Sampdoria held onto their slender lead to claim all three points and leave Milan licking their wounds.
The Rossoneri's hopes of competing for the Serie A title almost demolished as they lie third in the table on 48 points, 11 adrift of leaders Inter, who face AS Roma later in the day.
The defeat will increase the pressure on coach Carlo Ancelotti, who said recently that Milan's only objective was to qualify for the Champions League.
Milan, who have won nothing since their 2007 Champions League triumph, were eliminated from the Italian Cup and the UEFA Cup.
Watch Sampdoria's first goal
Watch Sampdoria's second goal
Watch Milan's goal