With the hosts trying to attack from the off, Milan found the perfect antidote with the opening goal after only four minutes. The Rossoneri won the ball back high up the pitch before a defence-splitting pass from Youssouf Fofana found Christian Pulisic, who calmly tucked the ball home.
From that moment on, Venezia dominated and had their first sight of goal when Alessio Zerbin found space in the box, but he could only fire wide of the near post.
The Arancioneroverdi continued to push and thought they had their equaliser 10 minutes before half-time when John Yeboah slammed home after a fine one-touch move, but the lengthy celebrations were eventually silenced by VAR finding an offside call in the build-up.
Mike Maignan was then called into action just before the break when he had to be alert to deal with a dangerous free-kick from Hans Nicolussi Caviglia, sending Milan into the interval 1-0 ahead.

The Rossoneri had a golden chance to strike quickly after the restart as the ball fell to Rafael Leao in a crowded box, but he was slightly off-balance and could only blaze the ball over.
Perhaps sensing their attacking threat from the first half had faded, Eusebio Di Francesco responded with four changes after the hour mark, but as they threw everyone forward in search of an equaliser, the visitors struck again at the death through Santiago Gimenez, who raced clear before producing a deft lob over Ionuț Radu to seal the win.
Despite picking up three points, Milan remain ninth in the standings, but they do move within five points of sixth-placed Lazio, albeit having played a game more. Meanwhile, Venezia stay 19th, one point away from safety, and having only won four games all season, time is running out to save their Serie A status.
Flashscore Man of the Match: John Yeboah (Venezia)