Ukraine produced a stirring play-off semi-final performance to end Scotland's World Cup dreams at Hampden Park on Wednesday.
An emotionally charged encounter was played against the backdrop of the war in Ukraine, with this - a match of huge significance - the nation's first competitive game since Russia's invasion in February.
It was the visitors who settled quickest following a frantic opening to proceedings, but Craig Gordon was on his toes to make three crucial early saves.
The Scotland stopper tipped a half-volley from Viktor Tsygankov over the bar before miraculously denying Andriy Yarmolenko from point-blank range. Two minutes later, Gordon was off his line sharply to smother Roman Yaremchuk as he bore down on goal.
The hosts' opportunities were limited in the first half as Ukraine kept them at arms' length. Grant Hanley headed over from a corner and a John McGinn effort suffered a similar fate following some good combination play down the left flank.
The opening goal was worthy of the occasion, and the scorer was apt. Shortly after the half-hour mark, Ukrainian national treasure Yarmolenko ran onto Ruslan Malinovksyi's inch-perfect long ball before controlling expertly and lifting a deft finish over the onrushing Gordon and into the back of the net.
Ukraine tightened their grip early in the second half, imposing themselves and doubling their lead within five minutes. It was Yaremchuk who rose highest at the back post to send a downward header into the bottom corner and leave Scotland's World Cup hopes dangling by a thread.
The visitors were oozing confidence and went close again soon after when Yarmolenko danced into the box and tested Gordon at his near post.
McGinn then missed a gilt-edged opportunity to pull one back when he somehow headed wide from a rebound when he was just a few yards out. Each keeper produced a save from half-chances at either end before Scotland did give themselves hope.
After he had already flapped at the ball a couple of times, a horrible double-error from goalkeeper Georgiy Buschan gifted the hosts a goal with 11 minutes to go. Buschan produced a weak punch and Callum McGregor squeezed a shot past his weak wrists that just edged over the line.
Scotland threw everything at the Ukrainians in what was left of the game but always looked susceptible on the break. After the away side had already spurned two glaring chances on the counter - including a one-v-one was brilliantly stopped by McGregor - they finally put one away with what was the last kick of the game.
Substitute Artem Dobvyk ran clear and planted the ball beyond a rooted Gordon, sparking joyous scenes in the away end.
It's Ukraine who advance to the World Cup play-off final against Wales. Here's how the players rated at Hampden...
1. Scotland (3-5-2)
GK: Craig Gordon - 6/10 - Made three hugely important early saves but could do nothing about Yarmolenko's finish. Solid again after the break but shipped twice more.
CB: Scott McTominay - 6/10 - Ball-carrying ability made him a useful tool, although sometimes a little weak and his passing was loose. Influence grew going forward.
CB: Grant Hanley - 5/10 - Looked cumbersome at times and given a really tough ride by the physical Yaremchuk.
CB: Liam Cooper - 4/10 - Strange positioning as Ukraine took the lead. Subbed after conceding a couple of fouls.
RWB: Aaron Hickey - 5/10 - A little ponderous and easily out-jumped for the second.
CM: Billy Gilmour - 4/10 - Nowhere near the required influence for such an accomplished ball-player. Subbed.
CM: Callum McGregor - 7/10 - Neat and tidy but didn't see enough of the ball - struggling to get close to his opposite numbers who were a cut above. Squeezed a shot in to pull one back. Incredible recovery challenge to stop Artem Dobvyk on the break.
AM: John McGinn - 5/10 - Struggled to influence things and booked for crashing into Taras Stepanenko. Somehow missed a header from mere yards out.
LWB: Andy Robertson - 5/10 - Always an attacking outlet and made some driving runs, beating his man. Caught out by Yarmolenko's run.
ST: Che Adams - 6/10 - Never stopped running and tested the goalkeeper with a low drive.
ST: Lyndon Dykes - 4/10 - Put himself about and eventually booked for a high arm. Hooked at the break.
SUB: Ryan Christie (46' for Dykes) - 6/10 - Got into some dangerous positions and was effective.
SUB: Jack Hendry (67' for Cooper) - 5/10
SUB: Stuart Armstrong (76' for Gilmour) - 5/10
2. Ukraine (4-5-1)
GK: Georgiy Buschan - 3/10 - Somehow survived a number of hairy moments. Finally punished as he flapped at a cross and then McGregor's finish.
RB: Oleksandr Karavaev - 6/10 - One of those who understandably didn't look at the peak of his fitness. Didn't stop him playing a nice assist for the second.
CB: Illia Zabarnyi - 6/10 - Very solid, winning the vast majority of his ground duels.
CB: Mykola Matvienko - 7/10 - Made a very smart challenge in the box as McGinn threatened and looked cool and collected.
LB: Vitaliy Mykolenko - 5/10 - Provided plenty of attacking support but wasn't at his best defensively.
RM: Andriy Yarmolenko - 8/10 - Somehow denied by Gordon from very close in. Made amends with a sublime first touch and lofted finish over Gordon. Tested the keeper again after the break and dazzled with his footwork.
DM: Taras Stepanenko - 5/10 - Anchored the midfield with minimal fuss, although struggled a little in his duels.
CM: Ruslan Malinovskyi - 7/10 - Picked up an early yellow. Inch-perfect ball to pick out Yarmolenko for the assist. A supreme ball-player.
CM: Oleksandr Zinchenko - 8/10 - Oozed class in the midfield, keeping things simple. Shifted out to the left and helped Ukraine dominate early in the second period. Some wonderful footwork.
LM: Viktor Tsygankov - 6/10 - Dangerous. Thought he'd scored with a firm finish but denied by a fine save. Worked another opening later on but couldn't take advantage.
ST: Roman Yaremchuk - 7/10 - Booked very early on too, for a reckless challenge. Smothered by Gordon but nodded in the second with ease.
SUB: Mykhaylo Mudryk (72' for Tsygankov) - 6/10 - Played an absolutely incredible pass on the break with the outside of his boot.
SUB: Mykola Shaparenko (72' for Malinovskyi) - 5/10 - Booked.
SUB: Artem Dobvyk (78' for Yaremchuk) - 7/10 - Should have done better when clean through, but McGregor got to him. Did eventually produce a fine finish.
SUB: Oleksandr Zubkov (78' for Yarmolenko) - N/A - Another who spurned a clear chance late on.
SUB: Serhiy Sydorchuk (93' for Stepanenko) - N/A