Beleaguered Celtic lost for the fourth time in five games in all competitions as Andrew Shinnie's goal lifted Livingston off the bottom of the Scottish Premiership.
Celtic are now seven months without an away win domestically, and rarely looked like ending that run here.
Shinnie lashed the home side ahead in a first half where the visitors failed to test goalkeeper Max Stryjek.
They improved after the break but could not salvage a point.
It leaves Celtic toiling in sixth place after three league defeats in six games, and already four points behind champions Rangers.
Livingston, who had previously claimed just one point in five games, move up to ninth.
Not since a three-minute cameo away to Kilmarnock on 9 August 2020 had Boli Bolingoli been seen in a Celtic shirt. An ill-judged holiday to Spain in the midst of the Covid-19 pandemic had led to him being shipped off on loan to Turkey, seemingly never to appear for the club again.
Yet the Zaire-born full-back was back in the side under Ange Postecoglou. A big performance from him was needed to win over a sceptical Celtic support.
Predictably, Celtic started on the front foot, but little was falling for them in the box. Liel Abada shot over while a number of cross balls failed to reach their target.
Livingston were having to chase and hope something would fall their way, and their patience paid off when Shinnie scored his first goal for the club.
Deployed as a striker by boss David Martindale, he got himself across Stephen Welsh, took a neat touch, then turned and arrowed a shot beyond goalkeeper Joe Hart.
Celtic were shaken, but their domination continued. However, Livingston goalkeeper Stryjek was having an easy afternoon with Cameron Carter-Vickers and David Turnbull missing half chances.
Instead, Stryjek's opposite number Hart had to pull off a spectacular point-blank save to deny Jack Fitzwater with a header.
Celtic needed a creative spark. Tom Rogic tried to provide it with a driving run but was crowded out by a swarm of Livingston shirts. Welsh and Turnbull had efforts on target but again Stryjek collected them with the minimal of fuss.
Albian Ajeti had struggled to make an impact, but he headed wide, then turned brilliantly on the edge of the box before forcing Stryjek's first serious save as Celtic began to threaten as defeat stared them in the face.
Stryjek saved well again from Turnbull, but once more Hart had to keep Celtic in the game at the other end when he pushed away Alan Forrest's low-angled shot.
Celtic piled on the pressure late on. Carter-Vickers thumped a long-distance effort wide of the post, and then Fitzwater had to clear after Stryjek spilled a cross.
But the goal wouldn't come and Livingston have still not lost at home to Celtic since February 2007.
Man of the match- Andrew Shinnie
What did we learn?
There appears to be two sides to Celtic this season. The swashbuckling version that scored 12 over two games with Dundee and St Mirren, and had scored three on Thursday in Seville.
However, the version that appeared in West Lothian look stunted in the final third, far too predictable, and rarely looked like breaching Livingston's goal.
The home side had gone into this game rooted to the bottom of the table without a win. But they made life as difficult as possible, and David Martindale's decision to play Shinnie as a forward paid dividends.
What did they say?
Livingston manager David Martindale: "Andrew Shinnie reminded me of big Lyndon Dykes today, even the aerial threat. He's just such a clever footballer. It was a top class number nine performance and his finish epitomised his overall performance.
"To a man, everybody on the park was fantastic today."
Celtic manager Ange Postecoglou: "We didn't start the game well and we paid the price. After they scored we dug ourselves into a little bit of a hole. We just weren't aggressive enough.
"It's not good enough. If we want to be successful we can't continue not picking up results in these games. That's the test for us."
What's next?
Livingston are away to Rangers in the League Cup on Wednesday (19:45 BST) then travel to Hearts in the Premiership on Saturday (15:00). Celtic host Raith Rovers in the League Cup on Thursday (19:45), before welcoming Dundee United on Sunday in the Premiership (15:00).