Ruben Neves celebrates his goal Image source, Getty Images
Image caption,

Neves rose brilliantly to score the winner and move Portugal on to nine points

At a glance

  • Ruben Neves scores stoppage-time header to earn Portugal dramatic win

  • Caoimhin Kelleher saves second-half Cristiano Ronaldo penalty

  • Republic of Ireland stay bottom of Group F with three games left

Ruben Neves' stoppage-time header broke the Republic of Ireland's hearts and handed Portugal a dramatic World Cup qualifying win in Lisbon after Cristiano Ronaldo was denied from the spot.

Neves rose brilliantly to steer Francisco Trincao's cross home and spare Ronaldo's blushes after the five-time Ballon d'Or winner's failure to convert from 12 yards.

Ronaldo was denied by Caoimhin Kelleher 15 minutes from time after Dara O'Shea was adjudged to have used his arm to block Trincao's effort.

After Kelleher's intervention, it looked as though the Republic of Ireland would take a hard-fought point back to Dublin, only for Neves to condemn them to another defeat after last month's shock reverse to Armenia in Yerevan.

Hungary's 2-0 win over Armenia in Group F's other fixture on Saturday means they sit second, five points behind leaders Portugal after three rounds of games.

The Republic of Ireland are bottom, two points adrift of Armenia before a crucial meeting in Dublin on Tuesday.

Analysis: Hard work not enough for Republic of Ireland

Caoimhin Kelleher celebrates his penalty save from Cristiano Ronaldo Image source, Getty Images
Image caption,

Kelleher's penalty save to thwart Ronaldo was not enough to earn the Republic of Ireland a point

After a humbling night in Armenia last month, Republic of Ireland boss Heimir Hallgrimsson said his wounded players needed "almost a perfect game" to leave Lisbon with a positive result.

In an attempt to tighten up his defence, Hallgrimsson restored former captain Seamus Coleman to the line-up on his 37th birthday.

For much of the night, it yielded the desired response as the Republic of Ireland stoutly defended their box to frustrate Portugal.

At times against Hungary and Armenia, the Irish defence was prised apart with alarming ease, but they got through an enormous amount of work in Lisbon to intensify Portugal's frustrations and edge closer to taking a precious point.

The visitors' problem, however, was at the other end. While they poured everything into repelling Portugal's myriad threats, the attack mustered only two shots - neither on target - with frontman Evan Ferguson managing only 14 touches before he was replaced by Troy Parrott.

There were echoes of Faro in 2021, of course. Ronaldo had a penalty saved that night - by Gavin Bazunu - before popping up with two injury-time headers to deny the Republic of Ireland a famous win after John Egan had given Stephen Kenny's side the lead.

But this was not Ronaldo's night. In the first half, his fizzing left-footed drive hit a post, and he twice fired wide after the break before Kelleher saved his spot-kick with a foot after Dara O'Shea was penalised for handball.

Instead, it was Neves who headed the home side to a dramatic win, with the midfielder pointing to the sky in tribute to Diogo Jota in Portugal's first home game since the Liverpool star's death in July.

What's next for these sides?

Portugal: Roberto Martinez's side will aim to make it four wins from four when they host Hungary in Lisbon on Tuesday (19:45 BST).

Republic of Ireland: Heimir Hallgrimsson's team must put aside their latest disappointment before welcoming Armenia to Dublin in a must-win game on Tuesday (19:45 BST).

How you rated the players

Player of the match

Number: 1 C. Kelleher
Average rating 8.33
Number: 21 Rúben Neves
Average Rating: 5.81
Number: 7 Cristiano Ronaldo
Average Rating: 5.75
Number: 9 Gonçalo Ramos
Average Rating: 5.65
Number: 2 Nélson Semedo
Average Rating: 5.63
Number: 1 Diogo Costa
Average Rating: 5.55
Number: 16 Trincão
Average Rating: 5.47
Number: 5 Diogo Dalot
Average Rating: 5.39
Number: 19 Nuno Mendes
Average Rating: 5.35
Number: 13 Renato Veiga
Average Rating: 5.32
Number: 8 Bruno Fernandes
Average Rating: 5.31
Number: 23 Vitinha
Average Rating: 5.29
Number: 14 Gonçalo Inácio
Average Rating: 5.25
Number: 18 Pedro Neto
Average Rating: 5.24
Number: 10 Bernardo Silva
Average Rating: 5.22
Number: 17 Rafael Leão
Average Rating: 5.22
Number: 3 Rúben Dias
Average Rating: 5.17

After the opportunity to rate players has closed, the score displayed represents the average from all the submissions by BBC Sport users.