Milan boss Massimiliano Allegri gave new signing Nigel De Jong his first start of the season while Andrea Consigli reached a landmark as he made his 200th appearance for Atalanta.
The hosts started the better of the two sides as they dominated possession in the early exchanges. However, they could not turn that superiority into chances. In fact, it was the visitors that came closest to opening the scoring when Germain Denis lashed the ball onto the post.
By this stage the Orobici were growing in confidence and it showed as they carved out two more opportunities within minutes of each other. It was Denis again who had a glimpse on goal but his shot missed the target altogether this time. Then Maxmilliano Moralez fired in from 25 yards, however, he also failed to test Cristian Abbiati in the Milan goal.
After a nervy spell, the Rossoneri finally had their first goal scoring opportunity. A surging run through midfield by Urby Emmanuelson created a chance for Stephen El Sharaawy whose low drive Consigli could only parry.
Moments later Massimo Ambrosini's powerful shot from outside the box proved too hot for Consigli to hold but Giampaolo Pazzini was just beaten to the rebound by Thomas Manfredini.
The two teams traded blows before half-time, Moralez drawing a save from Abbiati before El Sharaawy's neat turn and volley forced Consigli into another save.
Milan began the second half in dominant fashion yet they continued to struggle to create clear cut goal scoring opportunites. Again, like in the opening period, it was Atalanta who engineered the first scoring chance when Davide Brivio unleashed a stinging shot that Abbiati could not hold.
Allegri then introduced Antonio Nocerino into proceedings as the Italy international replaced Massimo Ambrosini who picked up a knock.
Up front, E Sharaawy was proving to be Milan's best hope of breaking the deadlock and it was he who had the next chance for the hosts when his powerful effort on 57 minutes was only punched away by Consigli.
The break through did eventually come, but, it was the visitors that went ahead. After some good play, Germain Denis teed up Luca Cigarini who slotted the ball home into the bottom corner.
Milan responded well by pushing forward. In an attempt to get back into the game, Bojan was introduced for El Sharaawy. Stefano Colantuono responded by bringing on Michele Ferri for Brivio.
Pazzini was then presented with a terrific chance after some great work by Urby Emmanuelson but the former Inter man could not get a touch on the Dutchman's shot-cum-cross.
Giacomo Bonaventura was then taken off by Colantuano as Giuseppe De Luca came on in his place before Emmanuelson was withdrawn as Allegri again reshuffled his pack with Kevin Constant coming on in his place.
Goalscorer Cigarini then came off for Riccardo Cazzola as the visitors looked to close out the game.
Boateng then had a chance to pull the hosts level, but, after beating his marker his left-footed attempt flew over the bar.
While the Rossoneri pushed more and more forward, Atalanta almost doubled their lead five minutes from time and perhaps should of when Moralez had only Abbiati to beat but his shot missed the target completely.
Allegri's side pushed forward in desperation in the closing stages, however, they ran out of time as the match ended one-nil to the Orobici.
The defeat means Milan have only picked up three points from a possible nine so far this season while the visitors will be delighted to have recorded their first three points.