Spurs were defending a 1-0 lead from the first leg in Milan but Harry Redknapp had vowed his side would go on the offensive at White Hart Lane to put the tie beyond doubt.
That never quite materialised in truth but Spurs largely kept Milan at bay and survived one or two scary moments to make the last eight in their first season in Europe’s premier club competition..
Spurs were on the back foot for the majority of the first half and had William Gallas to thank for keeping them in the match after he hooked off the line after 25 minutes following an error by Heurelho Gomes.
However, the home side looked far more at ease in the second period and had chances to score through Rafael van der Vaart and Peter Crouch before Robinho went close to snatching an away goal for Milan at the death.
Much of the pre-match talk had centred on whether Gareth Bale would be fit enough to start after Redknapp revealed on Tuesday that he was “struggling” to recover from a back injury.
The Spurs boss ended up playing it safe, with the 21-year-old taking a place on the bench and Steven Pienaar preferred down the left flank.
Jermain Defoe’s two goals at Wolves were not enough to earn him a starting place, with Redknapp opting to stick with the Crouch and Van der Vaart combination that has worked so well in Europe this year.
Milan head coach Massimiliano Allegri named Mathieu Flamini in his side three weeks after he was guilty of committing what Redknapp described as Spurs took only 90 seconds to fashion their first chance, with Van der Vaart toe-poking just wide from 20 yards.
Zlatan Ibrahimovic then threatened at the other end before Crouch thought he should have had a penalty when he appeared to have his shirt pulled by Ignazio Abate, with referee Frank De Bleeckere waving play on.
Despite the quick start from Spurs, Milan soon settled and began to dictate much of the play, with Kevin-Prince Boateng, Robinho, and Clarence Seedorf probing the Spurs defence with searching through-balls.
Gomes saved well from a 25-yard Zlatan Ibrahimovic free-kick before Robinho had a crack at goal with a 30-yard strike that ballooned over the Spurs bar.
Tottenham survived their biggest scare on 25 minutes when Gomes needlessly raced out of his goal to challenge Pato, only to see the Brazilian get to the ball first and feed Robinho, whose deflected shot was superbly hooked off the line by Gallas.
Van der Vaart curled a 25-yard free-kick just over Christian Abbiati’s goal moments later but Milan came storming up the other end soon after, with Pato drawing a good save out of Gomes from eight yards.
Milan continued to look the more dangerous of the two teams as the first half neared its end and Gallas did well again to deny Ibrahimovic a chance from inside the box.
Spurs came out for the second half much more confidently, however, with Lennon crossing from the right to Crouch, who was unmarked at the back post but opted to head back into an empty six-yard box when he should have gone for goal.
Marek Jankulovski’s reckless late challenge on Aaron Lennon after 47 minutes earned him a booking as Spurs kept up the pressure on the visitors but Milan served them with a reminder of their potency minutes later when Flamini fired a low ball across the box that somehow did not result in a tap-in.
Lennon then skinned his marker to aim a cross towards the back post but the ball fell to Seedorf, who handballed before clearing. The home side appealed for a penalty but the referee waved play on.
Flamini, whose every touch was booed by the home fans, then slid in on Assou-Ekotto in a similar challenge to the one that felled Corluka three weeks ago. He clearly played the ball but the home crowd were nonetheless outraged when he was only shown yellow because of the vigour at which he slid in.
Milan’s best chance arrived when Abate released Robinho into the box and he fired low at Gomes. The ball squirmed free to the Brazil striker but the Spurs stopper got a hand to the loose ball and Robinho eventually poked wide.
The home crowd sang for Bale’s introduction and it came with 25 minutes left when he replaced Van der Vaart.
Milan, meanwhile, looked to German youngster Alexander Merkel for inspiration as he replaced Boateng with 15 minutes remaining.
Soon after, the visiting fans thought Pato had put Milan back in the tie when he fired towards goal but his shot rippled into the side netting.
Roman Pavlyuchenko came on for Crouch with eight minutes left as Milan looked to grab the opener to take the game into extra time.
Sandro, who had battled well all night, continued to break up play though and Bale’s pace ensured that Milan did not over-commit forward.
The home fans’ nerves were frayed when Robinho’s deflected shot flew just over after a clever one-two with Ibrahimovic in the 92nd minute but Spurs held on to take the tie 1-0 on aggregate.