Fulham striker Aleksandar Mitrovic scored a dramatic late winner as Serbia booked their place at next year’s World Cup and condemned Portugal to the play-offs.
Hosts Portugal only needed a draw to qualify and looked to have done enough, with Renato Sanches’ opener cancelled out by Dusan Tadic’s equaliser.
Mitrovic had started the game on the bench but was sent on at half-time.
He was quiet until he popped up in the final seconds to head in the winner.
The late goal sparked jubilant celebrations on the Serbia bench and silenced the stunned home crowd.
Serbia finish top of Group A with 20 points, three more than Portugal, whose hopes of playing in Qatar next year rest on two rounds of play-offs in March.
It had looked like being a long night for the visitors when they fell behind inside just two minutes when Sanches finished confidently after Bernardo Silva had won possession.
But Serbia did not let their heads drop and deservedly equalised when Rui Patricio failed to keep out Tadic’s shot, which crept over the line.
Cristiano Ronaldo, himself familiar with scoring dramatic late goals with Manchester United this season, was quiet and came closest with a free-kick in the first half.
Instead it was Mitrovic who grabbed the headlines as he was left unmarked to meet a late cross and send a downward header into the back of the net and claim a famous win for Serbia.
- 1Rui Patrício
- 20CanceloBooked at 8mins
- 6José Fonte
- 4Rúben Dias
- 5Tavares Mendes
- 16Renato SanchesBooked at 67minsSubstituted forNevesat 84′minutes
- 13DaniloSubstituted forAndré Silvaat 90+2′minutes
- 8João MoutinhoBooked at 61minsSubstituted forAlves Palhinha Gonçalvesat 64′minutes
- 10Bernardo SilvaSubstituted forBruno Fernandesat 64′minutes
- 7Cristiano Ronaldo
- 21JotaSubstituted forSequeiraat 83′minutes
- 2Nélson Semedo
- 9André Silva
- 11Bruno Fernandes
- 12Malheiro de Sá
- 14William Carvalho
- 15da Conceição Leão
- 17Gonçalo Guedes
- 19Alves Palhinha Gonçalves
- 22Meireles Costa
- 4MilenkovicBooked at 70mins
- 21VeljkovicSubstituted forSpajicat 65′minutes
- 2PavlovicBooked at 66mins
- 14ZivkovicSubstituted forRadonjicat 69′minutes
- 8GudeljBooked at 13minsSubstituted forMitrovicat 45′minutesBooked at 90mins
- 17KosticSubstituted forJovicat 89′minutes
Match ends, Portugal 1, Serbia 2.
Second Half ends, Portugal 1, Serbia 2.
Corner, Serbia. Conceded by Bruno Fernandes.
Attempt missed. Cristiano Ronaldo (Portugal) left footed shot from outside the box is too high. Assisted by João Cancelo.
Substitution, Portugal. André Silva replaces Danilo Pereira.
Aleksandar Mitrovic (Serbia) is shown the yellow card for excessive celebration.
Goal! Portugal 1, Serbia 2. Aleksandar Mitrovic (Serbia) header from the centre of the box to the top left corner. Assisted by Dusan Tadic with a cross following a corner.
Corner, Serbia. Conceded by Danilo Pereira.
Attempt saved. João Palhinha (Portugal) header from the right side of the box is saved in the top centre of the goal. Assisted by Bruno Fernandes with a cross.
Substitution, Serbia. Luka Jovic replaces Filip Kostic.
Corner, Portugal. Conceded by Uros Spajic.
Substitution, Portugal. Rúben Neves replaces Renato Sanches.
Substitution, Portugal. João Félix replaces Diogo Jota.
Attempt missed. Aleksandar Mitrovic (Serbia) header from the centre of the box misses to the right. Assisted by Filip Kostic with a cross.
Corner, Serbia. Conceded by João Palhinha.
Dusan Vlahovic (Serbia) wins a free kick on the left wing.
Foul by João Cancelo (Portugal).
Corner, Serbia. Conceded by Nuno Mendes.
Foul by Sergej Milinkovic-Savic (Serbia).
Renato Sanches (Portugal) wins a free kick in the attacking half.