The Italian giants entered the match knowing that they needed a point against their Austrian opponents in order to advance to the last-16 stage of the competition.
Milan came close to making the breakthrough in the third minute when Theo Hernandez struck a powerful effort towards goal, only for the woodwork to come to Salzburg's rescue.
The Italian giants did manage to score in the 14th minute, though, with Olivier Giroud heading a Sandro Tonali corner into the back of the net.
The goal did not change the end-to-end nature of the game, with Chukwubuike Adamu firing into the arms of Milan goalkeeper Ciprian Tatarusanu shortly after the opening goal.
Giroud again had the ball in the back of the net in the 25th minute after a strike from Hernandez had been palmed into a dangerous area by Philipp Kohn, but the offside flag came to Salzburg's rescue on this occasion.
Adamu again tested Tatarusanu late in the first period, while Rafael Leao was causing problems down the other end, with just the one goal separating the two teams at the interval.
Milan doubled their lead less than one minute into the restart, though, with Giroud turning provider for Rade Krunic, who headed into the back of the net from close range.
Two became three just before the hour, with Leao setting up Giroud, who fired into the back of the net to score his second of the night in Milan.
Leao hit the crossbar with a powerful drive in the 66th minute, but the Serie A giants did manage to add a fourth late on, with Junior Messias scoring after being found by Giroud.
Milan have finished on 10 points, three points behind section winners Chelsea, while Salzburg have claimed third, which will see them drop into the Europa League.