Leigh Griffiths had given Ronny Deila’s men the lead with his 40th goal of the season, a landmark strike for Scotland’s Player of the Year who becomes the first Celtic player to reach that tally in a campaign since Henrik Larsson 12 years ago.
But Saints hit back to take full advantage of a couple of shocking blunders at the back from Celtic, the unforced errors from Stefan Johansen and then serial offender Efe Ambrose punished by Steven MacLean and substitute Graham Cummins.
It is St Johnstone’s fourth victory over Celtic during the champions’ current five-in-a-row era, an impressive record which illustrates the fine work carried out in Perth by Wright. It is also a win which secures Saints £1.53 million in SPFL prize money, around £100,000 more than they would have received for finishing fifth.
Deila’s penultimate team selection as Celtic manager saw him make no fewer than seven changes to his starting line-up. With the title formally clinched last Sunday, it was difficult to invest this fixture with any great sense of significance for the champions but it was an opportunity for some fringe members of their over-sized first team squad to try and catch the eye.
Perhaps unsurprisingly, the visitors were the slower of the two sides to settle as they adjusted to their unfamiliar make-up. Saints had the edge in the opening exchanges, pressing high up the pitch but without creating any clear-cut openings.
It was Celtic who were the first to pose a serious goal threat, almost inevitably in the form of Griffiths. Their leading scorer, making his final appearance of the campaign before he sits out this weekend’s title party against Motherwell through suspension, was eager to sign off with a flourish.
Ryan Christie, making his first starting appearance for the club, picked Griffiths out with a well judged cross from the left but the striker’s firm header was kept out by a fine save from Zander Clark.
St Johnstone responded robustly and came close in the 23rd minute when Logan Bailly, handed a rare stand-in outing in goal for Celtic, handled outside his penalty area to concede a free-kick. It was drilled across the face of goal by Liam Craig for Brian Easton to see his close range shot blocked.
A minute later, there was an uncomfortable moment for Erik Sviatchenko when the Danish defender, handed the captain’s armband for the night, found himself on the wrong side of Chris Kane as the Saints striker raced onto a David Wotherspoon through ball. Fortunately for Sviatchenko, Kane dragged his shot just wide of Bailly’s right hand post.
Patrick Roberts was being contained fairly effectively by the home defence but the teenage winger burst into life on the half hour mark when he cut in from the right and saw his dipping left foot shot from 22 yards deflected narrowly beyond Clark’s right hand post.
A largely forgettable first half ended with St Johnstone on the front foot as Joe Shaughnessy saw a shot deflected just wide after a quickly taken free-kick had caught out the Celtic defence.
Scott Allan, making only his third starting appearance for Celtic since his move from Hibs last summer, created the first opening of the second half when his cross from the left picked out Christle who might have done better than glance a header off target.
There was suddenly a brighter tempo to the action and Celtic took the lead with a well crafted and superbly finished goal in the 53rd minute. Ambrose initiated a sweeping move down the left which saw Callum McGregor and Johansen combine to feed Griffiths on the edge of the penalty area.
The striker twisted his way beyond a couple of challenges towards the six yard box before slotting the ball coolly beyond Clark with the outside of his left boot.
It was a moment to savour for Griffiths and even referee Willie Collum showed a benevolent side as he kept his yellow card in his pocket when the scorer celebrated by going towards the Celtic fans behind the goal and embracing his young son Rhys who was among them.
But the lead lasted only three minutes as St Johnstone took full advantage of a horrible moment for Johansen. The Norwegian midfielder dallied in possession on the edge of the Celtic penalty area and was robbed of the ball by MacLean who raced through to loft a delightful finish over the exposed Bailly from around 12 yards.
The experimental look of Celtic’s team was added to with the introduction of highly regarded 17-year-old right-back Anthony Ralston for his debut as a substitute for Saidy Janko as the game entered the closing stages.
He could only look on in dismay, however, as a defensive calamity allowed Saints to grab the winner with 13 minutes remaining. Shaughnessy’s cross from the right looked like Bailly’s to take but the goalkeeper saw the ball headed out of his grasp by team-mate Ambrose. It fell kindly for Cummins to slot home from close range.
Christie missed a glaring chance to equalise for Celtic in stoppage time, shooting tamely at Clark from close range, but this was Saints’ night.
Referee: W Collum
ST JOHNSTONE: Clark, Shaughnessy, Scobbie, Anderson, Easton; Wotherspoon, Brown, Craig, Swanson (Doyle 90); Kane (Cummins 59), MacLean. Subs not used: Mannus, Sutton, Hurst, McCawl, Krachunov.
CELTIC: Bailly, Janko (Ralston 74), Ambrose, Sviatchenko. Izaguirre; McGregor, Johansen (Bitton 66); Roberts, Allan (Rogic 80), Christie; Griffiths. Subs not used: Fasan, Armstrong, Forrest, Tierney.