Teenager Stephan El Shaarawy opened the scoring midway through the first half but Ivan Radovanovic equalised two minutes from time.
In the extra period Brazilian pair Robinho and Alexandre Pato combined for the latter to score the winner and secure a clash with Lazio in the next round.
Coach Massimiliano Allegri rested star performers such as Zlatan Ibrahimovic, Thiago Silva and Mark van Bommel while Kevin-Prince Boateng has been ruled out for a month with a hamstring injury.
It meant veteran Filippo Inzaghi was given a starting berth alongside youngsters such as El Shaarawy and Alexander Merkel, while France centre-back Philippe Mexes was afforded a rare start.
In fact Merkel was thrust straight into the team despite only re-joining the club from Genoa 24 hours earlier.
Allegri was relieved to have made it through.
“We conceded a goal a minute from the end from a free-kick we could have avoided,” he moaned.
“Then we had a chance to make it 3-1. We struggled but the important thing was to go through and we’ve done that.”
Chances were few and far between with Inzaghi, 38, peeling off his marker at the back post to meet an inswinging cross from Luca Antonini, only to head wide.
Moments later and Novara’s Simone Pesce tried his luck from outside the box but reserve goalkeeper Marco Aurelio turned the ball around the post.
The goal came on 24 minutes as El Shaarawy, 19, turned inside a defender and then thumped a shot from distance beyond Alberto Fontana.
The tiring Inzaghi made way for Pato who soon after teed up Urby Emanuelson but the Dutch midfielder’s shot was too close to Fontana.
Pato seemed keen to make an impact but he was well off target with a pair of chances, a shot from an angle and a free-kick from a long way out.
And out of the blue, having hardly created anything all night, Novara equalised when Radovanovic cracked in a free-kick from long range.
In extra-time Fontana came to his side’s rescue when he made an instinctive one-handed save to deny Pato from five yards out after Ignazio Abate’s devillish cross.
But moments later substitute Robinho brilliantly dinked the ball past the defence and Pato chipped Fontana before volleying home.
Seconds later Robinho crashed a volley against the post as Milan showed far more urgency than they had done in the first half.
Milan finished with 10 men and under the cosh as Pato limped off injured.