St Johnstone were punished for not making the most of promising openings and, in the end, were comfortably beaten by Hearts.
Josh Ginnelly’s deflected first half strike had the capital club one up at the interval before he added another just after the hour mark.
Jorge Grant then well and truly wrapped up the victory and sent Saints home licking their wounds.
Manager Callum Davidson had made three changes from last week’s 1-1 draw with St Mirren.
There was no Andy Considine listed on the teamsheet and, therefore, James Brown was given the nod at the back.
Dan Phillips was in the stand due to suspension and that opened the door for Graham Carey to take his place in the middle of the park.
And in the forward department, Nicky Clark missed out with injury. Connor McLennan was given the nod from the first whistle.
Again a familiar face rooted himself between the Hearts posts in former Perth goalkeeper and cup double stalwart Zander Clark.
He gifted Saints a ninth minute opening with a loose pass but redeemed himself moments later by denying Stevie May’s low drive from the edge of the box.
Up the other end, Remi Matthews needed to be equally alert to keep out Michael Smith’s volley following a neat passage of play involving Robert Snodgrass and Lawrence Shankland.
In the 21st minute, Hearts were ahead. That was when Ginnelly’s left-footed effort from the edge of the box took a wicked deflected off Brown and nestled in the bottom corner.
There had been Perth appeals for a foul on Adam Montgomery in the build-up but referee Steven McLean was not interested.
Shankland was soon on the hunt for a second but Matthews tipped his powerful attempt behind for a corner.
Saints, before the half hour mark, did have a couple of decent opportunities and first when Carey was unable to find the target from a promising position after being teed-up by May.
Another terrific May cut-back was inches away from being turned over the line by Drey Wright.
There was time before the break for Cammy MacPherson to test Clark with a left-footed curler which required an acrobatic touch over the bar.
And then McLennan was picked out by a lofted Wright cross from the right flank but he couldn’t keep the header down.
Minutes into the second half Hallberg was able to keep his header down - from a Carey corner - but Clark comfortably plucked the ball from the air.
Hallberg was attempting to level proceedings again as the hour mark neared, this time his right-footed strike from distance edging the wrong side of the post.
Not making the most of promising openings is never going to end well and Hearts punished Saints in the 62nd minute.
A neat pass had found Barrie McKay inside the box and his square ball was perfect for Ginnelly to bundle home from a couple of yards, doubling his own - and his team’s - tally.
Zak Rudden, on the scoresheet last week, entered the action with 20 minutes remaining in place of McLennan as Perth boss Davidson chased a spark.
His team, however, were three down in the 73rd minute when Grant found the bottom corner with what appeared to be an attempted cross.
David Wotherspoon, Jamie Murphy, Theo Bair and Tony Gallacher were all thrown on but, by this point, it was very much game over. Rudden did round Clark in the final minute and looked set to grab a consolation, only for Kingsley to block off the line.
Hearts, deep in stoppage time, hit the crossbar through Garang Kuol's effort.