Alan Thompson's solitary goal was enough to clinch victory for Celtic and keep their European dreams alive.
The midfielder scored from an indirect free-kick on 25 minutes after Shakhtar's goalkeeper was penalised for time wasting.
The Ukrainian side were reduced to nine men after two red cards.
But despite plenty of possession Celtic failed to press home their numerical advantage and had to settle for a nervy first three Champions League points.
Celtic made an encouraging start with a neat bit of football which gave
Henri Camara a chance after just 40 seconds.
Aiden McGeady, Alan Thompson and John Hartson combined to give
the Senegal international a sight of goal but he screwed his left-foot shot past
the post.
Shakhtar looked nervous at the back and Joos Valgaeren should have done better
in the fifth minute.
Stilian Petrov flicked the ball onto him but the Belgian international headed straight at Jan Lastuvka from just seven yards.
But the best early chance fell to Shakhtar and Celtic had young goalkeeper
David Marshall to thank for keeping them on level terms.
Julius Aghahowa chested the ball into the path of Francelino Matuzalem and he let fly with a fierce right-foot volley from 20 yards which Marshall did well to dive to his left and push away.
Shakhtar survived a goalmouth scramble in the 22nd minute but Didier Agathe could not reach the loose ball.
The Scottish champions went ahead in the 25th minute after the referee penalized Lastuvka for holding the ball in his hands for longer than the permitted six seconds.
Petrov rolled the indirect free-kick, just inside the Shakhtar penalty box, to Thompson who crashed it through the wall and into the back of the net.
And Celtic's task was made even easier three minutes before half-time when Shakhtar's captain Anatolyi Tymoschuk was sent-off for tripping Camara.
As the second half got underway Lastuvka was a busy man in the Shakhtar goal and had to save from Hartson and Petrov before his team were reduced to nine men.
Cosmin Barcauan received his second yellow card for tripping Petrov.
Andriy Vorobyey tried to resuscitate his flagging side with a long-range effort which
flew just wide.
Goalkeeper Lastuvka was keeping the Ukrainians in the game and he made another great stop to deny Hartson's stinging right-foot drive.
But the visitors refused to lie down and even enjoyed some decent possession despite being outnumbered.
Shakhtar went close to leveling five minutes from the end when midfielder Mariusz Lewandowski met a left wing free kick with a close range header but it was straight at
Celtic keeper Marshall.
Celtic: Marshall, Agathe, Varga, Valgaeren, McNamara,
McGeady (Wallace 79), Lennon, Petrov, Thompson, Hartson,
Camara (Beattie 81). Subs Not Used: Hedman, Sylla, Juninho Paulista, Pearson, Petta.
Booked: Valgaeren.
Goals: Thompson 25.
Shakhtar Donetsk: Lastuvka, Stoican, Barcauan, Lewandowski,
Srna, Duljaj, Tymoschuk, Matuzalem, Vukic (Hubschman 60),
Aghahowa (Marica 67), Vorobey (Batista 71). Subs Not Used: Shutkov, Bielik, Lalatovic, Pukanych.
Sent Off: Tymoschuk (43), Barcauan (59).
Booked: Barcauan.
Att: 58,347
Ref: Eric Poulat (France).