For a time – a long time – a Hearts hoodoo at McDiarmid Park was a very real thing.
But that was pre-Lawrence Shankland.
And with him in their team, they’re well and truly into the match-winning habit.
That’s three in a row in the Fair City, with the Scottish Premiership’s leading goal scorer finding the net in each of them.
His decisive goal early in the second half was the sort of composed finish we’ve come to expect, albeit life was made a bit too easy for him by the Saints defence before he pulled the trigger.
And there were a couple of good chances to equalise thereafter.
Craig Levein’s team came into the game buoyed by their first away win of the season but they were coming up against a Hearts side which had put together a stunning run of results.
Eight wins and one draw in their last nine was form even Rangers and Celtic had’t matched.
So it was no great surprise that the visitors began the game pretty much camped in their opponents’ half.
Not that they had any chances of half-chances to show for it, mind you.
Hearts did have a promising set-piece opportunity when Luke Robinson chopped down Kenneth Vargas on the edge of the box (picking up a yellow card in doing so) but Graham Carey did well to intercept Alex Cochrane’s attempt to pick out Shankland.
They got a bit closer to scoring just before the half-hour mark when Scott Fraser whipped a ball over from the left that Frankie Kent headed back into the danger area, with Stephen Kingsley’s shot well saved by Dimitar Mitov.
It wasn’t all one-way traffic in the first half, though.
Saints started to get lone striker, Benji Kimpioka, into the game more as half-time approached and the Swede got two shots away within a minute, both just inside the box but neither easy.
The first was blocked by Kingsley and Kimpioka sliced the second.
Levein made a change during the interval, replacing Fran Franczak with Sven Sprangler.
Shortly after the restart, ex-Hearts man, Connor Smith, shot straight at ex-Saints man, Zander Clark, from the edge of the box.
Alan Forrest came much closer to scoring at the other end seconds later, when his curled effort on the angle got past Mitov’s dive but grazed the outside of the post rather than the inside.
Hearts didn’t have much longer to wait for their opening goal.
Andy Considine misjudged the flight of a long Kent pass down the middle and also allowed Shankland to get goal-side of him by the time it dropped on the 18-yard line.
Ryan McGowan tried to help his central-defensive partner out but the former Dundee United striker was now in total control of the situation, flicked the ball over McGowan and stroked it past Mitov.
Avoidable from a Saints perspective but lethal number nine-play from Shankland.
There was no point in Levein sticking now and on 65 minutes he twisted by sending on Adama Sidibeh and Nicky Clark for Tony Gallacher and Kimpioka.
Both substitutes came close to equalising – Sidibeh with a fierce strike that was blocked by Alex Cochrane and Clark with a header cleared off the line.
Sidibeh also had a chance in stoppage time from Max Kucheriavyi cut-back but skied his effort into the Ormond Stand.
St Johnstone star man – Dare Olufunwa
The young defender built on a strong substitute display in Dingwall with a solid performance for the full match at right-back in this one.
Mitov 6.5, Gallacher 6 (Clark, 65), Considine 6, McGowan 6.5, Carey 6.5, Kucheriavyi 6, Olufunwa 7, Robinson 6.5, Kimpioka 6.5 (Sidibeh, 65), Franczak 6 (Sprangler, 45), C Smith 6.5 (Jaiyesimi, 85). Subs not used – Richards, May, Kane, K Smith.