A brace from Sello Japhta condemned Celtic to their 10th loss of the season as they hover only five points above the relegation zone in 12th place with 22 points.
Stars, on the other hand, moved into the top half of the table in eighth place with 31 points from 22 games.
It was a cagey opening 20 minutes with neither side able to create any clear-cut chances on goal.
The game sprang into life in the 25th minute with Ea Lla Koto taking the lead courtesy of a powerful 20-yard strike by Japhta.
Celtic were able to draw level in the 38th minute from the penalty spot via Fiston Razak after Thapelo Morena was brought down inside the box by Bokang Thlone.
Five minutes after the break Makhehlene Makhaula almost restored Stars' lead, but his 20-yard shot struck the outside of the post.
In the 63rd minute Japhta probably scored one of the goals of the season after dribbling his way past three defenders before coolly passing the ball home from 14-yards out.
Celtic tried to find their way back into the game after that, but the visitors' defence stood firm.