Giovanni van Bronckhorst's men could not have come closer to making history at the Ramon Sanchez Pizjuan on Wednesday evening.
They took the lead through Joe Aribo’s cool finish after some slapstick defending from the German side but were pegged back beg quickly as Colombian striker Rafael Santos Borre took advantage of some poor defending from Rangers as they failed to deal with a simple cross.
Rangers grew as the game went on and were arguably the better team when the game went to extra-time. They created by far the best chance to win it when substitute Kemar Roofe ran on to a long ball, hit the byline and fired a cross into the path of Ryan Kent but the winger was denied by a brilliant stop from Kevin Trapp. Steven Davis sent the rebound over the bar via a deflection.
It took the match to penalties, taken in front of the Rangers support behind one of the goals. Nine of ten spot kicks were scored. However, it was Aaron Ramsey, the big-name January signing who missed the decisive penalty, shooting down the middle, Trapp repelling the effort with his feet.
Frankfurt's penalties were all either emphatic or well placed with Allan McGregor having little chance.
Now Rangers must switch their focus to Saturday's Scottish Cup final clash with Hearts at Hampden Park.
Here is The Scotsman's ratings out of ten for all 17 players to get game time.
1. Allan McGregor - 7
A big night for the 40-year-old in what could be his final game for the club. A sharp intervention early on to deny Kamada before getting up sharply to save from Sow. His big moment came down to his left to turn a Knauff effort around the post.
Photo: Alex Pantling
2. James Tavernier - 6
This was a game where his focus was more on defending than bombing forward and becoming an auxilary forward. He was up against Filip Kostic. Even though the game didn’t go the way he would want it to have gone in terms of his role, he stuck to his job.
Photo: Alex Pantling
3. Connor Goldson - 5
Not one of the centre-back’s better individual performances. In the first half he was guilty of giving the ball away too much with diagonals that rarely found their intended target. He won’t like to see his role in the equalising goal. It looked as if he should have been well placed to cut out the cross.
Photo: JAVIER SORIANO
4. Calvin Bassey - 9
An incredible story, incredible progress. He was immense, for the most part. Covered Barisic so well, was unbeatable in one v one duels, far too strong and provided a crucial block with his chest. Lost a mark for his role in the Frankfurt equaliser as Borre was able to get in front to divert a cross past McGregor.
Photo: Justin Setterfield