Bernd Leno pulled off a string of fine saves to ensure a point for the Bundesliga side and leave Mircea Lucescu's men with a mountain to climb in their bid to qualify
Goalkeeper Bernd Leno was Leverkusen's hero, making a string of terrific saves throughout the Group A clash as the visitors consolidated their position in second place behind Manchester United.
Shakhtar thoroughly dominated the first half, having 10 attempts on goal, with the influential Darijo Srna going closest when his cross-cum-shot drifted into the post.
Leno denied Facundo Ferreyra twice in the early stages, while Bernard and Yaroslav Rakitskiy were also frustrated by the in-form keeper in the first half.
Leverkusen improved after the break and threatened on the counter, with Sidney Sam and Heung-Min Son having their best chances, but Shakhtar almost claimed victory when substitute Ilsinho sent a fizzing effort just wide with 13 minutes left.
Leno's brilliance was enough to give Leverkusen a hard-fought draw, though, as they remain two points ahead of the third-placed Ukrainians.
Both sides made wholesale changes after disappointing away defeats at the weekend, with Leverkusen head coach Sami Hyypia making six to the side that lost at rock-bottom Eintracht Braunschweig, recalling Sam, Son and striker Stefan Kiessling.
Shakhtar – who made seven alterations of their own – created the game's first chance when Srna's cut-back was fired at goal by Ferreyra in the seventh minute, but Leno gathered at the second attempt.
Leno again denied Ferreyra, this time making a superb reaction save to deny the forward from close range, while Gonzalo Castro and Sam both had half-chances at the other end on the break.
Shakhtar dominated a first half played at a frantic pace, though, and Srna's cross – which floated towards goal and had Leno well beaten, only to hit the post – began a period of dominance for the hosts.
Bernard forced Leno into a terrific diving save in the 32nd minute before Srna thrashed the rebound over, while Rakitskiy had a powerful effort tipped over by the busy goalkeeper at the near post.
Leno moved well to keep out Srna's dipping free-kick in the first minute of the second half before the visitors enjoyed a strong spell, with Sam and Son forcing Shakhtar goalkeeper Andriy Pyatov into action.
Leverkusen had success exploiting the space Shakhtar gave them, but the hosts stepped up a gear just after the hour mark, with Ferreyra and Douglas Costa firing over before Rakitskiy saw a close-range shot diverted wide.
Sam wasted a good chance for Leverkusen when he shot straight at Pyatov on the turn in the 72nd minute, while Shakhtar substitute Ilsinho saw a long-range effort go agonisingly wide.
Luiz Adriano headed straight at Leno in stoppage time, but Shakhtar could find no way past the keeper as the Bundesliga side claimed a valuable point to put them in a commanding position to reach the last 16.