Striker Filippo Inzaghi equalised for Milan deep into injury time, giving the home side a comfortable 6-3 aggregate win after thrashing Roma 4-1 in the first leg earlier this month.
With 76,000 Milan fans celebrating the Champions League final win over Juventus, Roma striker Francesco Totti briefly threatened to spoil the party by thumping home two free-kicks from 30 yards in the second half.
But Rivaldo scored for Milan with a close-range header a minute after Roma went 2-0 up, crushing any hope Roma might have had of pulling the final back.
After Roma striker Antonio Cassano was sent off with 20 minutes remaining and Totti received his second booking just before fulltime, Inzaghi then raced on to a through ball from Rivaldo to equalise and seal the aggregate win three minutes into injury time.
With half the players who beat Juventus either on the bench or rested altogether, Milan only momentarily got into top gear but they appeared determined not to lose on their night of celebration.
After receiving the Italian Cup, the Milan players left the field before re-emerging one by one, picked out by spotlights in the dimmed stadium.
Captain Paolo Maldini was the last to appear, sending the fans wild by hauling out the European Cup, the continent's most prestigious club prize.
"We are very happy. Tonight was unforgettable and people are very upbeat," Milan coach Carlo Ancellotti told reporters after a roaring fireworks display. "We will try to do it all again next year."
Milan won the Champions League final in a penalty shoot-out after the all-Italian match in Manchester finished 0-0 at the end of extra time.
Milan finished a distant third to champions Juventus in Serie A this season.