Atalanta had been the better side at Lazio's Stadio Olimpico home, hitting the woodwork either side of half-time in Wednesday's showpiece.
But substitute Milinkovic-Savic broke the deadlock for Lazio, powering home Lucas Leiva's corner, before Joaquin Correa wrapped it up with a second goal in the 90th minute.
Lazio's first Coppa Italia crown since 2013 will go some way towards making up for losing two of the past four finals to Juventus.
Marten de Roon hit the post as Atalanta made a great start, Gian Piero Gasperini's men somehow failing to force the ball home in a subsequent melee.
Simone Inzaghi had seen enough of his side's problems containing Atalanta and sent on Stefan Radu for Bastos amid a flurry of first-half bookings in a bad-tempered opening 45 minutes.
Atalanta - in their first Coppa final since 1996 - continued to make the running with Timothy Castagne recording the game's first shot on target, forcing a low save from Thomas Strakosha after the restart.
And they hit the woodwork again in the 76th minute, Alejandro Gomez finding a pocket of space near the byline but thudding his drive against the outside of the post.
Those fine margins proved key as Milinkovic-Savic struck within three minutes of his arrival. A left-wing corner was curled invitingly into his path and the Serbiamidfielder got in front of his marker to nod home a famous goal for Lazio.
And they made sure of their triumph at the death as Correa did brilliantly to round goalkeeper Pierluigi Gollini and squeeze his finish over the line.
Finally - glory for Lazio
In recent years the Coppa Italia has been full of pain for Lazio fans, who watched their side fall short against Juve in both the 2015 and 2017 finals. However, they were finally able to celebrate this year.
For Atalanta, this was a crushing blow, especially as they were so close to opening the scoring twice. But Gasperini's men, fourth in Serie A, could yet qualify for the Champions League.