Comeback kid Murray Davidson hit Livingston with a knockout punch after being out injured since Boxing Day.
The midfielder was back with a bang at McDiarmid Park as his 77th-minute goal gave the frozen fans something to cheer about.
He pounced after Livi goalkeeper Liam Kelly saved what looked like a netbound header from Matty Kennedy, with Davidson sweeping the loose ball home.
It wasn’t the bonniest of goals he has scored in his career but he was nevertheless delighted to make such a massive impact following his enforced absence with a knee injury.
This hard-fought victory – St Johnstone’s fourth in a row after beating St Mirren and Dundee in the league, as well as Hamilton in the Scottish Cup – pushed the Perth side up to fifth spot in the Premiership table, moving them above Hearts after the Jam Tarts lost to the Dark Blues at home.
Davidson’s presence in the starting line-up was a welcome sight for the home fans as he returned to the midfield of the park, taking the place of Chris Kane.
Saints’ ‘new’ boy Michael O’Halloran was also on the bench after returning to McDiarmid Park for a third time after a spell in Australia at Melbourne City.
On what was a bitterly cold night, the minus temperatures had an impact on the attendance, with only 1,946 souls braving the weather.
The first attempt came from the hosts on six minutes, with Liam Craig shooting wide from outside the box after making decent space for himself.
Two minutes later, Steven Lawless tried his luck from distance for Livi but also missed the target.
Livingston frontman Ryan Hardie saw his 17th-minute strike deflected for a corner as the match struggled to warm up – just like the fans.
However, it was nearly 1-0 to the visitors when Hardie struck again, this time keeper Zander Clark diving to save the shot at his near post.
On 28 minutes, Saints threatened with David Wotherspoon’s netbound drive from just inside the box but it was blocked before it got to the goal.
Craig came the closest yet for the home team just after the half-hour when he fired in a freekick from 35 yards that was pushed over the bar by goalie Kelly.
Ross Callachan missed the target by a foot with a 25-yard strike as St Johnstone tried to break the deadlock then Livi had a go at the other end when Lawless scooped his shot over the bar after being found by Chris Erskine’s pass.
The first half finished goalless, however, and the collective wish of the shivering spectators was that things would improve after the break.
That was a forlorn hope, though, with the game not getting going again until the 61st minute. That was when Saints keeper Clark had to dive to push Craig Halkett’s 30-yard freekick over the bar for a corner.
The hosts brought on Kane for Callachan as they went in search of the opener but it was Livi who attacked next, with Halkett just missing with a free header.
The West Lothian men made a switch of their own on 73 minutes, bringing on Gregg Wylde for Lawless, but they found themselves behind four minutes later as Saints finally made the breakthrough.
Good work on the right by Richard Foster saw him beat Erskine before crossing into the goalmouth. Kennedy’s header looked like going in until keeper Kelly clawed it out. However, the ball only got as far as Davidson, who poked it into the net from close range.
Livi made a double change, with Scott Tiffoney and Nicky Cadden getting runouts, while Blair Alston made an appearance for Saints.
Then the stage was set for O’Halloran to come on with just a minute of regulation time remaining.
O’Halloran, who replaced Watt, played a small part in helping the home team get over the line but will no doubt be a key man for Tommy Wright’s team as they try to climb even higher in the table.
Attendance: 1,946.
St Johnstone: Clark, Tanser, Shaughnessy, Davidson, Wotherspoon, Kerr, Foster, Craig, Callachan (Kane 62), Watt, Kennedy (Alston 84). Subs not used: Hurst, Anderson, Swanson, O’Halloran, Gordon.
Livingston: Kelly, Lamie, Lithgow, Halkett, Gallagher, Byrne, Pittman (Tiffoney 80), Lawless (Wylde 73), Sibbald, Hardie, Erskine (Cadden 80). Subs not used: Stewart, Brown, Jacobs, Lawson.
Referee: Andrew Dallas.