Porto reached the last 16 of the Europa League thanks to a thrilling contest over two legs against Eintracht Frankfurt, going through on away goals with the game 5-5 on aggregate.
Frankfurt went 2-0 ahead, just as Porto managed a week ago. Stefan Aigner's first-half strike was added to by Alexander Meier early in the second before Porto battled back via two Eliaquim Mangala headers.
Frankfurt scored what looked to be the winner through Meier, but home hearts were broken by Nabil Ghilas, who hammered in a rebound with four minutes to play and this time Porto were able to hold on to set up a clash with Napoli.
Read how the action unfolded below.
Good evening! It's time for the second leg of the Europa League last 32 games and right here we have Frankfurt against Porto. A 2-2 draw a week ago in Portugal means that there is still everything to play for in this tie. If the first leg is anything to go by we are in for a cracker.
It was looking rosy for Porto with less than 20 minutes to play last week, but Joselu and then an own goal from Alex Sandro ensured that this one is far from over. Frankfurt scored two away goals in a draw which has given them a very good chance of causing an upset. They'll need to play just as well, though.
So, who is playing tonight for the two sides as they hope to finish the job? Let's take a look...
FRANKFURT XI: Trapp; Jung, Madlung, Zambrano, Oczipka; Flum, Schwegler; Aigner, Meier, Barnetta; Joselu
PORTO XI: Helton; Danilo, Maicon, Mangala, Sandro; Fernando, Eduardo, Herrera; Varela, Martinez, Quaresma
So for Porto that's one change to their lineup with Carlos Eduardo coming in for Josue. They've kept a very attacking lineup despite being away - and that's to be expected with the likes of Jackson Martinez, Ricardo Quaresma and Silvestre Varela available for them.
For Frankfurt both Stefan Aigner and Tranquillo Barnetta are included in the XI. Remember, Sebastian Rode was injured at the weekend and is now likely to miss the rest of the season and that is a huge blow for them. He has had a very good season and often when he plays well so do Frankfurt. It's a big game for the skipper Pirmin Schwegler in midfield in the absence of Rode.
At 2-0 down a week ago only the Frankfurt die-hard faithful would have given them a chance to get back in this tie, but they are more than just in it now. The die-hard faithful I speak of have been magnificent throughout this tournament as well - they took 7,500 to Porto last week and 12,000 to the final group game in Bordeaux.
Even with their home advantage, Frankfurt are the underdogs to qualify tonight. If you fancy a flutter on this one you can back the hosts at around 5/2, while Porto are slightly better than evens. The draw over 90 minutes is 12/5.
PREDICTION: As the players go through the pre-match niceties, it's time to put my neck on the line. You know what, I'm tipping the German side to get through tonight - they have been very strong in Europe compared to the league and can see them taking it 2-1.
KICKOFF: Here we go then. The hosts in read and black get things started in a very good atmosphere in Frankfurt.
Frankfurt's task tonight will be to nullify the threat of pace that Porto have on the break. Jung at right-back in particular will be key up against Quaresma. Here is the first chance for Porto to break through Varela, but in the end Herrera is tackled and the ball is cleared.
Very risky backpass there from Mangala to his keeper Helton, but it was good, aware work from Fernando to get back and offer himself as a get-out option. No chances on goal as yet, but it's been an interesting tactical battle so far.
Porto have got themselves on top of this game just now with some good passing. The midfield duo of Fernando and Herrera are seeing plenty of it, but the crossing and passes in the final third have gone astray so far. Still easy, however.
Frankfurt are doing the right thing so far, playing calmly and not committing too many men forward in each attack. It's up to Porto to score tonight, as if things stay as they are it will be the German side who qualify.
Martinez looks to get on to a pass from Danilo, which was perhaps meant to go beyond him, but cannot get it under control. He leaves the ball behind but might have found himself through on goal had his touch been better.
CHANCE! almost the exact same situation there, only closer to goal. The ball is put in for Martinez, but his touch at the far post takes the ball out for a goal kick. Porto are on top here.
We haven't seen a lot of Joselu up front so far. He's not pressing too high up the pitch, but he's far enough forward to look a little bit isolated early on. Then again, he did very little before his goal last week.
That's a heavy touch again from Martinez, who has looked a bit sluggish thus far. Quaresma leads a counter-attack through the middle, before he looks left for the striker, but Martinez's touch means that Frankfurt can win the ball back and get it clear.
Quaresma, who did claim the goal he scored last week although it looked like it might have been a cross, fires in a free kick but it goes flying well wide. He's hit better, for sure.
BOOKING: Aigner goes into the book for a late challenge on Sandro. From the free kick Trapp comes but doesn't claim it and Mangala's header goes wide. Not great keeping there.
CHANCE! Meier gets to the ball on the right byline inside the box, and hooks it back into the danger area. Flum was left unmarked to chest it down, but it didn't quite drop for him as he rifled a left-footed shot over the bar.
CHANCE! An even better chance there at the other end! Herrera had ghosted into the box at the near post and headed goalwards but somehow put it wide of the near post! He really should have scored.
Rare foray forward there from the home team as Mangala is beaten to the ball and Aigner set away down the right. His cross is really poor, though, and goes straight out of play over the bar.
Frankfurt just coming back into this one a little bit. Porto had a strong spell around 5-10 minutes ago, but now it's Frankfurt's turn. They haven't yet properly worked Helton, but are enjoying a spell of possession.
GOAL! Frankfurt 1-0 Porto (Stefan Aigner)
It's a simple goal, but again Porto's defensive deficiencies have been shown up. The cross came in from the left and it was headed to Aigner by Meier, who finished low from close range. Big goal that!
BOOKING: Porto are out of sorts at the moment. Frankfurt were breaking through the middle with Schwegler, but he was checked to the ground by Maicon. You can get away with one tackle like that per game.
If Frankfurt can see this out to half time it will be a very important 45 for them. Neither side has been in control, but there's not doubt that Porto have had the better chances. Helton is down well to push away a shot from Barnetta.
HALF-TIME: Frankfurt 1-0 Porto
There's a real potential upset on the cards tonight. Frankfurt are no mugs, of course, but Porto are the top-scorers in the Portuguese league and perennial Champions League qualifiers. The away side need two goals at least now. 1-1 won't be enough.
Porto have been wasteful in attack with Martinez guilty of a poor first touch on a couple of occasions. Frankfurt scored really with their first chance of the game, but Porto in a way deserved to concede for not making the most of their chances.
The goal was well-worked, but Porto have to defend better. It was crossed deep to Meier at the far post, who nodded it to Aigner for a really neat low finish.
Here we go. We're back underway and Frankfurt are 45 minutes from knocking out one of the big teams who dropped into this competition.
SHOT! Good strike that from Joselu, who fired right-footed from a cutback but put his effort over. Straight up the other end Martinez drags a shot wide of the far post from inside the box. Great start to the half.
Woeful effort from Martinez there, who is guilty at the moment of trying a bit too hard. He shoots from outside the box but slices it out for a goal kick near the corner flag.
BOOKING: Aigner has had a really good game so far and this time he's too quick for Herrera. The Mexican comes across and brings down the Frankfurt man on the right, before getting carded. He makes a dive gesture, but he really can't argue.
GOAL! Frankfurt 2-0 Porto (Alexander Meier)
My, oh my! That is sloppy defending again from Porto but equally really good officiating. Porto stepped up as the ball came in over the top - three players were offside, but Barnetta wasn't and before the away defence reacted he had squared to Meier for a tap-in. Porto still need two but Frankfurt are flying!
PORTO SUB: Nabil Ghilas is on for the away side, with Herrera coming off. The Mexican was getting more and more frustrated and was a red card waiting to happen.
Frankfurt are playing well at the back and are closing Porto down before they can threaten. Quaresma's cross is deflected behind for a corner before Meier clears with a huge header.
GOAL! Frankfurt 2-1 Porto (Mangala)
That's an excellent header from Mangala there! The corner was cleared, but it was whipped in towards the six-yard box by Quaresma on his left foot, where Mangala guided it into the bottom corner with a diving header. The game is on again!
CLOSE! Frankfurt probably should be 3-1 up! The counter and are three on one. Jung miscontrols in the box before trying a back-heel, which is cleared off the line. The shot then comes in and it smacks Jung in the face before being cleared. Frantic!
BOOKINGS: New man Ghilas and Zambrano both go into the book for a bit of a scuffle. It's all very edgy here and that card means that Zambrano will miss the last 16 game if Frankfurt go through. Then there's a brilliant stop from Trapp, who throws himself low to his right to keep out Maicon's brilliant strike.
Quaresma is being pelted with objects from the crowd as he steps up to take a corner. That's a real shame and we don't want to see it. He shows something to the referee which looks like a lighter - Frankfurt might be in trouble for that.
Porto are seeing a lot of the ball at the moment, although at the other end Frankfurt have a free kick for what looks like a backpass. That almost never happens - this tie has everything. Suddenly they have to defend.
It doesn't come to anything and is partially cleared. The hosts work a move down the left with Oczipka's cross to Aigner headed behind for a corner. Barnetta will take.
FRANKFURT SUB: Aigner, who has been very good indeed, makes way for Jan Rosenthal. Some fresh legs up front on the break could be a good move from Armin Veh.
GOAL! Frankfurt 2-2 Porto (Mangala)
It's happened again! This time Frankfurt have been pegged back from two goals ahead. Quaresma runs at a long-range free kick, but instead plays it to his right for Fernando. His cross is thumped low by Mangala who now has two. We're dead level in this brilliant tie.
Suddenly Frankfurt are under huge pressure. Schwegler almost gets himself in trouble as he's surrounded by blue and white shirts, but wins a free kick. I expect this to be an end to end last 15 or so mins.
BOOKING: Varela is tugged from behind by Meier, who gets yellow carded for his troubles.
GOAL! Frankfurt 3-2 Porto (Alexander Meier)
What a tie this is! Oczipka gets down the byline on the left, his cross is nodded on by Joselu to Meier who puts in a half-volley and restores his side's lead. That means no extra time now.
Have Porto got it in them to get back in this game again? At 2-2 they were on top and you feel that this is a huge blow. The next goal, if there is one, might win it. If it's 4-2 Porto won't score two, while 3-3 the away side would go through on away goals.
CHANCE! Big chance for the visitors there. The ball comes in from the left and Eduardo beats Trapp in the air but puts his effort over the bar. If it was on target that would have been 3-3.
FRANKFURT SUB: Martin Lanig is on for Joselu, which means that Veh is looking to shore things up now. Still time for a chance though.
GOAL! Frankfurt 3-3 Porto (Ghilas)
What a game this is! Nabil Ghilas has what could be the goal to put Porto through! Initially Trapp did brilliantly to keep out a shot from Lica, but Ghilas threw himself at the ball at the far post to hammer it into the roof of the net. My word.
BOOKING: Jung then goes into the book for the home side for a foul on Lica. I fancy Porto to see this out now.
Late change for Porto as Martinez - who has been poor - makes way for Diego Reyes. They aren't hurrying here, Porto.
Four minutes of time have been added on. Porto are deep now and the home fans are still right behind their team. The thing is, you still fancy another goal here!
FULL-TIME: Frankfurt 3-3 Porto (5-5 on aggregate) - Porto through on away goals
You won't see many better European ties than this one! Frankfurt go out to Porto but they have done Armin Veh massively proud. Thanks for joining me for this one - I'll be bringing Fiorentina's clash with Esbjerg next, so please stick around for that. From here, it's goodbye.