Valter Birsa's goal a minute into the second half handed Massimiliano Allegri's side a much-needed three points as winless Sampdoria's woes continued.
Milan made two changes from Wednesday's 3-3 draw in Bologna, with Cristian Zaccardo and Sulley Muntari replacing Ignacio Abate and Antonio Nocerino respectively.
The visitors also made two alterations from their midweek fixture, as Vesco Regini and Angelo Palombo came in for Daniele Gastaldello and Nenad Krsticic.
After a quiet opening to the game, Milan fired the first warning shot in the 17th minute when Kevin Constant ran on to Robinho's floated pass and fizzed a first-time volley just wide of the left-hand post.
Seven minutes later, the home side went close again as Valter Birsa curled a 25-yard free kick just over Angelo Da Costa's crossbar.
For all the home side's dominance, it was Sampdoria who came closest to opening the scoring in the 26th minute when Andrea Costa met a left-wing corner with a header that shaved the right-hand upright.
And just two minutes later, Manolo Gabbiadini fired a 30-yard strike over Christian Abbiati's crossbar as the game began to open up.
Shortly after the half-hour mark, Sampdoria were indebted to Shkodran Mustafi for keeping the game level, the defender throwing his body at Muntari's goalbound volley to delfect the ball over the crossbar.
Philippe Mexes also went close for the hosts soon afterwards, just failing to get a meaningful connection on the ball as Birsa's free kick from the left found its way to the back post.
Milan made a dream start to the second half with a goal in the first minute, Birsa collecting Robinho's pass on the edge of the box before picking his spot and passing the ball beyond Da Costa from 20 yards
Milan should have been further ahead two minutes later as Robinho got on the end of Andrea Poli's cross six yards out, but his stabbed effort fell into the grateful arms of Da Costa with the goal gaping.
The home side were dominating proceedings, but squandered another golden chance in the 63rd minute when Alessandro Matri, clean through on goal, saw his weak effort saved by the legs of the Sampdoria goalkeeper.
Five minutes later, Matri was again denied a certain goal by another superb Mustafi block 10 yards out.
In the final 10 minutes, Gianluca Sansone wasted a good opportunity to equalise, blazing his shot over after a rare foray forward from Sampdoria.
Substitute Mbaye Niang almost made the game safe in stoppage time, Da Costa tipping his low effort round the post, but it mattered little as Milan held on to seal the points.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.