Rangers faltered at their final Europa League hurdle with a cruel 5-4 penalty shootout defeat to Eintracht Frankfurt in Seville.
Joe Aribo had the Gers fans in raptures in the searing heat of the Ramon Sanchez-Pizjuan stadium when he opened the scoring in the 57th minute.
However, Colombia forward Rafael Borre levelled in the 68th minute to give the game 30 added minutes where Frankfurt goalkeeper Kevin Trapp made a fantastic last-gasp save from Ryan Kent.
Then came penalties and despair for the Light Blues and substitute Aaron Ramsey in particular who had his spot-kick saved.
Gers skipper James Tavernier scored as did substitutes Steven Davis, Scott Arfield and Kemar Roofe, while Christopher Lenz, Ajdin Hrustic, Daichi Kamada, Filip Kostic and Borre scored their penalties as Rangers' Europa League journey ended in disappointment.
It was Rangers' 19th game in Europe this season and Giovanni Van Bronckhorst's side now have to get themselves ready for the Scottish Cup final against Hearts at Hampden Park on Saturday.
Ibrox optimism was high beforehand.
It was the same Rangers team from the semi-final win over RB Leipzig at Ibrox - fit again Roofe was on the bench - with Aribo playing furthest forward again.
Tens of thousands of Gers fans travelled to Spain, most without tickets but in the event they ended up with about two thirds of the 42,000-capacity stadium as both sets of supporters contributed to a terrific atmosphere.
It was a frantic start to the match.
The game had a lengthy break when Frankfurt skipper Sebastian Rode required a bandage for a cut following a high challenge by Gers midfielder John Lundstram.
In the 20th minute, Rangers goalkeeper Allan McGregor turned a 20-yard drive from Ansgar Knauff round the post for a corner and they survived somewhat unconvincingly.
Five minutes later, and just before a welcome water break, Aribo took a pass from Scott Wright and curled his shot from distance just past Trapp's right-hand post.
Back came the German outfit. Following a corner which fell to his feet, Jesper Lindstrom's goal-bound effort came off his own player, Kamada, and was cleared.
Up the pitch went the Glasgow side and Trapp tipped a Lundstram header from a Borna Barisic free-kick over the crossbar but the corner proved fruitless.
Frankfurt started the second half on the front foot. A deflected strike by Lindstrom wrong-footed McGregor but sped past the post, with Rangers defending the corner.
In the 52nd minute, Light Blues defender Connor Goldson was perhaps fortunate to escape unpunished following a VAR check for a penalty when he challenged Borre, after which Kent slashed a shot wide at the other end.
Then came a blue explosion in the stands when Rangers went ahead.
Djibril Sow stretched to get a header back towards his own goal, defender Tuta slipped allowing Aribo to run clean through and guide the ball past Trapp.
The Rangers dream was on - and then it was put on hold. In the 67th minute, the Bundesliga side missed a sitter when Rode played in Kamada and he lifted the ball over the head of McGregor but also on to the top of the net.
However, two minutes later, Borre slid in front of Goldson and Calvin Bassey and converted a cross from Kostic.
Momentum looked to have swung towards Oliver Glasner's men.
Nerves came into play and there was a sharp intake of breath from Gers fans in the 88th minute when Kostic flashed a cross past the face of McGregor's goal and out of play.
There was no change to the scoreline by half-time of extra-time but plenty of tired legs.
Trapp beat away a decent long-distance effort by Barisic and a deflected drive by Kent but and Frankfurt substitute Kristijan Jakic fired over the crossbar.
At the other end, Trapp made a brilliant save from a close-range Kent shot and then another good stop from a Tavernier free-kick.
Then came penalties - into the end filled with Rangers fans - but the match finished in heartbreak for the Premiership team.
Trapp, Toure, Tuta (Hasebe 58), N'Dicka (Lenz 101), Knauff, Rode (Jakic 90), Sow (Hrustic 106), Kostic, Lindstrom (Hauge 71),Kamada, Borre. Subs Not Used: Lammers, Ache, Chandler, Da Costa, Barkok, Grahl, Paciencia.
McGregor, Tavernier, Goldson, Bassey, Barisic (Roofe 117), Jack (Davis 74), Lundstram, Kamara (Arfield 91), Wright (Sakala 74), Aribo (Sands 101), Kent, Sakala (Ramsey 118). Subs Not Used: Diallo, Balogun, McCrorie, McLaughlin, Lowry, King.
Slavko Vincic (Slovenia).