Celtic were given a footballing lesson by Red Bull Salzburg as the visitors deservedly won 2-1 at Celtic Park, but Brendan Rodgers' side still progressed to the Europa League knockout stages after RB Leipzig failed to beat Rosenborg.
On a bizarre night, Munas Dabbur headed home a Stefan Lainer cross midway through the second half to finally hammer home Salzburg's superiority, after they had spurned a raft of chances.
Craig Gordon made two outstanding saves to keep his team level in the first half, as Celtic were at times overwhelmed by the classy Austrian side. But the goalkeeper then made a horrendous blunder with 13 minutes left, gifting the ball to Fredrik Gulbrandsen for an easy tap-in to seemingly end hopes of a comeback.
As the game petered out, Rosenborg's equaliser in Germany raised the roof in Glasgow's east end, and Olivier Ntcham's late penalty helped raise spirits further. At the final whistle, the home and away fans celebrated in unison - both can now look forward to European football in the new year.
Despite qualification, it was a dispiriting night for Rodgers; his team lacked a goal threat and cohesion in midfield, and he also lost Ryan Christie to what appeared to be a serious ankle injury. Mikael Lustig was also forced off early with a head knock.
At times, Celtic were a shadow of what they have shown in domestic competition in recent weeks. They only required a point to progress to the last 32, and did start on the front foot.
On three minutes Scott Sinclair hit the bye-line and looked for James Forrest, but the cross was just too high for the Scotland winger to connect properly. Salzburg went straight up the park, and Zlatko Junuzovic's header from 12 yards had Gordon at full stretch tipping it over.
Celtic: Gordon (6), Lustig (5), Simunovic (6), Benkovic (6), Tierney (6), McGregor (6), Rogic (5), Christie (6), Forrest (6), Sinclair (4), Edouard (5).
Subs: Brown (6), Ntcham (6), Ajer (5).
RB Salzburg: Walke (7), Ulmer (8), Onguene (7), Ramalho (7), Lainer (7), Samassekou (7), Mwepu (6), Junuzovic (7), Wolf (6), Minamino (6), Dabbur (7).
Subs: Leitgeb (6), Prevljak (n/a), Gulbrandsen (7).
Man of the match: Andreas Ulmer.
The home support displayed their affection for the absent Leigh Griffiths in the ninth minute. The striker's name rang round the stadium and fans displayed a banner showing support for Griffiths, who will be absent from football for some time as he tackles personal issues.
Rodgers welcomed back Kieran Tierney following the 5-1 win over Kilmarnock as Emilio Izaguirre dropped to the substitutes' bench.
Kristoffer Ajer was also named among the reinforcements.
Salzburg made three changes. Alexander Walke replaced Cican Stankovic in goal while Marin Pongracic and Xaver Schlager dropped out as Jerome Junior Onguene and Enock Mwepu came into the midfield.
Salzburg had oozed class throughout this group, and they began to display that in abundance. They were inches away from a lead when Diadie Samassekou's header smacked the bar, landed on the line and was headed away by Christie for a corner. From that, Gordon was forced to cling on to a near-post flick, as Celtic's defence looked unstable at times.
Lustig had been flattened at a corner and looked groggy, and was finally replaced after just 20 minutes by Kristoffer Ajer. The switch added to the uncertainty in the home ranks, as Salzburg bossed proceedings, with Celtic's midfield trio of Callum McGregor, Christie and Tom Rogic, so effective in recent weeks, largely subdued.
Rogic, in particular, was all at sea, unable to make a pass or hold onto the ball when presented with it. It was the kind of testing European evening that looked well suited for Scott Brown, but the club captain was watching from the bench.
On the half hour, Ajer gifted the ball to Hannes Wolf who ran clean through on Gordon, but the goalkeeper brilliantly got a hand to the low shot and turned it behind. Celtic were in danger of being run ragged, but suddenly they fashioned a rare chance through Forrest, who broke clear on the right and fizzed a low ball across the six-yard line. Sinclair and Edouard both failed to attack it, as Forrest stood with arms aloft in frustration.
Somehow Celtic reached the break unscathed, though Salzburg's domination was reflected in stats that showed the visitors with 60 per cent of possession.
Brown was, perhaps unsurprisingly, brought on, with Sinclair making way, as Rodgers looked to get a grip on the game in midfield. Forrest pushed forward alongside Edouard and suddenly Salzburg had something to think about. McGregor's corner found Benkovic, whose header was scrambled clear by the Austrian defence with Ajer ready to pounce.
Celtic suffered another blow shortly afterwards, when Christie was stretchered off after injuring his ankle as he made a tremendous block on Takumi Minamino who was preparing to shoot. Play was halted for several minutes as the midfielder was fitted with a splint before departing, with Ntcham coming on in his place.
Rodgers had now used all his substitutes, but Celtic looked more solid than at any other time in the game, with Brown's influence growing. Ironically, it was then that Salzburg took the lead; Dabbur, who scored twice against Celtic when the sides met in September, was left unmarked to head home Lainer's cross. The ground fell silent as the visitors celebrated in the corner, though it appeared that Andre Ramalho was hit by a missile thrown from the home support.
Dabbur should have scored again with a free header from six yards out when Celtic failed to deal with a corner, but somehow Gordon turned it over the bar. The goalkeeper then made a calamitous error - as he collected a loose ball and tried to throw it to Kieran Tierney, Gulbrandsen got a toe to it, and stroked it into the empty net. Celtic looked sunk, and now required a favour to qualify.
Ajer had a chance to set up a frantic finish with seven minutes left, but he somehow prodded over from under the crossbar. Bizarrely, Celtic Park then began to reverberate to noise as news filtered through that Rosenborg had equalised in Germany against RB Leipzig - a result that guaranteed Celtic would go through.
Ntcham forced Alexander Walke into his first serious save of the night from a 25-yard free-kick, but as the match entered the second of seven extra minutes, the crowd erupted with joy at the news it had finished all square in Germany.
Moments later Celtic were awarded a penalty after Rogic tumbled in the area. Ntcham hit a weak shot that Walke parried, but then tucked home the rebound. Moments later it was all over - Celtic were through to Monday's draw, but not perhaps in the way they would have wished.
Man of the match - Andreas Ulmer
Salzburg remain one of the favourites to progress all the way in this year's competition and this was another demonstration of the unity that runs through their side, typified by their captain Andreas Ulmer.
The veteran full-back produced a tireless display for the visitors down the left flank, providing a constant outlet for
Marco Rose's side. His set-pieces caused numerous problems for the Celtic defence.
- Celtic have progressed through the group stages of the Europa League to the Last 32 for just the second time (also in 2014/15) since the competitions rebranding in 2009/10, having failed with their other three attempts.
- Celtic have failed to win any of their four European games against Red Bull Salzburg (D1 L3).
- Despite losing tonight, Celtic progress to the knock out round having won three of their six games - as many wins as they've managed in their previous 18 Europa League games.
- FC Red Bull Salzburg have won 37 matches in the UEFA Europa League since it was rebranded in 2009-10; more than any other team.
- No player has scored more goals in the UEFA Europa League this season than Salzburg's Munas Dabbur (6).
- Celtic's first attempt on target in this game came in 89th minute from substitute Olivier Ntcham, who also scored Celtic's goal.
Celtic are back in Scottish Premiership action on Sunday when they travel to face Hibernian, live on Sky Sports Football (kick-off: 12.30pm).