Goalkeeper Jens Lehmann ended Rangers' dream of UEFA Cup glory at the Westfalenstadion. Lehmann joined up with the attack in the 90th minute and had a hand in Fredi Bobic's equaliser which took the game into extra-time.
Then he saved three penalties in the shoot-out to give his side a place in the last 16.
Rangers carved out the first chance after eight minutes when Giovanni van Bronckhorst released McCann but his cross was easily taken by Lehmann.
Dortmund's Stefan Reuter found the side-netting with a shot after being set up by Ricken, and Christian Nerlinger tested goalkeeper Thomas Myhre after a poor clearance by Amoruso. However Dortmund eventually broke the deadlock in the 29th minute.
Christian Worns swung in a corner from the left, and although Myhre got a hand to Victor Ikpeba's header he was unable to prevent it finding the net.
Rangers were looking more confident as the game entered its final stages but Dortmund sensationally pulled level on aggregate in stoppage time when substitute Bobic fired home after the ball had been touched on by Lehmann, to take the game into extra-time.
McCann should have scored for Rangers after 11 minutes in extra-time but somehow, from almost on the goalline, he managed to steer his effort wide.
But the tie would be decided on penalty kicks.
Rangers paid for the paucity of their overall performance with Lehmann saving from van Bronckhorst, Numan and Claudio Reyna. Only Amoruso converted his spot-kick.
BORUSSIA DORTMUND: Lehmann, Reuter, Worns, Nijhuis, Ricken (Barbarez 81), Stevic (Tanko 71), Nerlinger, But, Ikpeba, Herrlich (Bobic 60), Addo. Subs Not Used: Baumann, De Beer. Booked: Herrlich, Addo, But, Reuter, Worns. Goals: Ikpeba 28, Bobic 90.
RANGERS: Myhre, Adamczuk (Kanchelskis 91), Moore, Amoruso, Numan, Van Bronckhorst, B. Ferguson, Reyna, Albertz (Durie 46), McCann, Wallace (Vidmar 90). Subs Not Used: Brown, Wilson, I. Ferguson, Carson. Booked: B. Ferguson, McCann, Moore.
Attendance: 30,000.
Referee: S Oguz (Turkey).