Diego Costa headed in Gabi's corner seven minutes from time to secure victory ahead of the return match in Madrid on March 11.
"We know that at Madrid it will be another game, which will also be important and very difficult," Milan coach Clarence Seedorf said. "Atletico don't change much whether they're playing at home or away from home.
"We have time to prepare the return leg and we'll have more players back. I'm proud of what we did tonight... I saw a lot of positive things on the pitch."
Bayern Munich won 2-0 at 10-man Arsenal in the other match of the night. Both teams missed a penalty in the first half, which also saw Arsenal goalkeeper Wojciech Szczesny sent off.
Milan had dominated the match with its best performance of the season, hitting the woodwork three times in an entertaining first half hour.
"We are a normal team, a very humble one which tries to do as well as we can," Atletico coach Diego Simeone said. "We started better but then Milan caused us problems.
"We didn't have many chances but as you know in football what matters is scoring goals and fortunately we scored a goal."
Spain's joint league leader was the overwhelming favourite but Milan was the superior side and had the better chances in Seedorf's first Champions League match as a manager. The Dutchman is the only player to have won the competition with three different clubs.
There was more bad news on the night for Milan as star striker Mario Balotelli went off clutching his shoulder 12 minutes from time. The Italy forward will have tests on Thursday.
Milan was boosted by key playmaker Kaka recovering from injury in time and the Brazilian was given the captain's armband. Kaka overcame a bout of 'flu to play in Friday's 1-0 victory over Bologna but had to be replaced 10 minutes from time after injuring his right ankle.
Stephan El Shaarawy, Valter Birsa, Robinho, Bryan Cristante and Cristian Zapata were all out with injury while Sulley Muntari and captain Riccardo Montolivo were both suspended. New signing Keisuke Honda is cup tied.
Milan was the underdog after a miserable season which saw coach Massimiliano Allegri sacked at the beginning of the year. The side is ninth in the Serie A table and had been eliminated in each of its past four knockout ties against Spanish opposition.
It appeared as if Milan's fears were to be realized as the players struggled to get out of their own half in the opening 10 minutes.
However, Milan was containing Atletico and slowly began to get into the game.
Balotelli had the first real chance of the match with a 30-meter free-kick from roughly the same position that he scored a stunning goal from on Friday. But the Italy forward fired well wide of the left post.
Milan went even closer four minutes later with a wickedly swerving shot from Kaka from the bottom corner of the penalty area which crashed off the crossbar.
Atletico goalkeeper Thibaut Courtois — who is on loan from Chelsea — pulled off a stunning save shortly afterwards, fingertipping Andrea Poli's header off the base of his right post after a great cross from Adel Taarabt.
Tension was beginning to escalate at San Siro and a touchline brawl threatened to erupt following a poor Emiliano Insua tackle on Mattia De Scglio. The Milan defender had to be replaced by Ignazio Abate.
Milan again went close on the half hour when Balotelli backeeled the ball to Kaka, whose effort scraped the top of the crossbar.
Milan continued to dominate after the break and Kaka again went close with a drive narrowly past the left upright, while Michael Essien headed a corner wide.
All Milan's good work was to come to nothing, though, as Diego Costa headed powerfully home at the far post for his fifth goal in four Champions League matches.
Milan almost snatched a draw but Adil Rami's free kick whistled wide of the left post.