David Raya saved two penalties as Arsenal beat Porto 4-2 in a shoot-out to reach their first Champions League quarter-final in 14 years.
Leandro Trossard’s first-half strike cancelled out a first-leg deficit but Mikel Arteta’s side then struggled to create chances to win the game as the tie finished 1-1 on aggregate.
All four of Arsenal’s penalty takers were faultless as Raya kept out spot-kicks from Wendell and Galeno to take the Premier League leaders past the last-16 stage for the first time since 2010.
As a player, Arteta suffered four straight defeats in this round of the competition but – having ended Arsenal’s seven-year Champions League exile – he has now guided his side into the final eight.
They could yet face rivals Manchester City, with the draw made on Friday, but for now they will be happy to have banished painful memories of defeats at this stage down the years – with seven consecutive exits in this round under Arsene Wenger.
This was also the first time Arteta’s Arsenal have won a knockout game at the Emirates Stadium, edging past Porto in what threatened at times to spill over into an ill-tempered affair – with the Arsenal boss and Sergio Conceicao, his counterpart, both cautioned.
Ben White looped a header onto the roof of the net as Arsenal set out their stall early on, with a tame Bukayo Saka strike spilt by Diogo Costa.
At the other end, a wayward headed clearance from William Saliba allowed Evanilson to shoot just wide to give the home fans their first fright of the evening.
Raya was called into action soon after to push away another Evanilson effort as Porto started to show how they could impact the game on the counter-attack.
Arsenal, though, were patient and steady in their build-up play and it paid off five minutes before the break, captain Martin Odegaard sliding in a sumptuous pass to Trossard, who finished low past Costa to level the tie on aggregate.
The goal buoyed the crowd and gave fresh impetus into the Arsenal drive in the second half, Declan Rice seeing a shot blocked by Pepe as the tie remained deadlocked heading into the last half an hour.
Arsenal thought that had changed when Odegaard tucked home after a mix-up between Costa and Pepe, only for referee Clement Turpin to award Porto a free-kick for a foul by Kai Havertz – a decision which saw Arteta booked for his remonstrations.
Francisco Conceicao missed a decent chance on the break as Porto looked to take back control of the tie, before his father – head coach Sergio – followed Arteta into the book for protesting against a decision.
Arteta turned to his bench with 10 minutes left on the clock with Gabriel Jesus on in place of Jorginho – the Brazil forward forcing a smart save out of Costa with his first involvement.
Saka was next to sting the palms of Costa, with Odegaard shanking the rebound wide when he should have done better.
There was nothing to separate the sides over 180 minutes, taking the tie to extra-time, where Porto substitute Mehdi Taremi blazed over when in a good position.
Sergio Conceicao was involved in another flashpoint as he and Havertz had an altercation on the touchline, while Arteta opted to introduce Eddie Nketiah and Oleksandr Zinchenko for the last 15 minutes.
Arsenal, though, were clearly starting to tire and failed to have a shot on target throughout extra-time as the game went to penalties.
It was 362 days ago that Arsenal lost a last-16 tie on spot-kicks, at the Emirates and to Portuguese opponents when Gabriel Martinelli’s miss saw Sporting Lisbon advance.
Odegaard, as captain, stepped up first and sent Costa the wrong way to put Arsenal in the driving seat but attacking midfielder Pepe drew the away side level.
Havertz rolled home his spot-kick and Raya then sprang low to his right to keep out Wendell’s effort, pushing it onto the post and seeing the rebound bounce off his back and wide.
Saka thrashed his strike into the corner to give Arsenal the advantage with Raya getting a hand to Marko Grujic’s penalty but seeing it nestle in the back of the net.
Rice converted to make it four from four for the Gunners and heap the pressure on Galeno – whose last-gasp goal in Porto had given the Portuguese side a first-leg lead – but this time his effort was saved by Raya.