Substitute Ricardo Quaresma put Portugal into the quarter-finals of Euro 2016 with the only goal three minutes from the end of extra time.
It was the first time either goalkeeper had been remotely threatened by either side who both struggled to create chances and the fact the Portuguese are into the last eight having not yet won a match in 90 minutes speaks volumes about the quality on show.
Cristiano Ronaldo cut a peripheral figure throughout until a quick counter-attack immediately after Ivan Perisic headed against the foot of a post saw his shot - the first on target all evening was saved by Daniel Subasic only to pop up to Quaresma two yards out.
Even the goal had an element of luck as it looked like it was a mis-hit shot from Nani which fortuitously found its way to Ronaldo, who put in yet another disappointing performance at this tournament.
He managed just 19 touches in the first half - none in Croatia's penalty area - and that was symptomatic of the opening 45 minutes which saw Pepe head over a Joao Mario free-kick and Perisic fire into the side-netting.
There was little improvement after the break as Marcelo Brozovic fired over from quickly-taken corner after Portugal's defence switched off and Domagoj Vida headed wide a Darijo Srna free-kick.
Even in extra-time there was little ambition with Perisic volleying wide a Luka Modric cross and Vida heading over a corner.
The match turned on 30 seconds in the dying moments as Perisic headed against the upright and Portugal launched an attack up field.
Renato Sanches carried it forward, offloaded to Nani, becoming the fourth Portugal player to win 100 caps, whose toe-poked effort seemed to be an intended shot but somehow found its way to Ronaldo at the far post.
His strike rebounded off Subasic to present Quaresma with the easiest of chances.
Croatia had one last chance to force penalties but Vida hooked a shot across the goal and wide of the far post.