Match ends, St. Johnstone 0, Heart of Midlothian 0.
St Johnstone and Hearts battled out the first goalless match between the sides in over 15 years.
Hearts played over an hour with 10 men after Juanma Delgado was sent off for a head butt on David Wotherspoon.
The best chance of the game fell the hosts' way after substitute Chris Kane was fouled by Miguel Pallardo in the box.
But Steven MacLean fired the resulting penalty over the bar, meaning Saints missed the chance to overtake Hearts.
Robbie Neilson's side remain third, a point ahead of Tommy Wright's men from Perth.
There was little by way of early action but that changed after 27 minutes.
Juanma was shown a straight red card by referee Kevin Clancy for his reaction to a challenge by Wotherspoon.
The Spanish striker had to be ushered away from the pitch by team-mate Callum Paterson but could have no complaints about the decision.
The home side almost made their extra man pay immediately when Murray Davidson found space eight yards out, his effort flying just wide of Neil Alexander's right-hand post.
Alexander parried away a Brian Easton shot in the second half while Hearts' Osman Sow glanced a header just over the crossbar after beating Steven Anderson to the ball.
Saints kept pushing forward and a MacLean effort on goal was blocked by team-mate Davidson.
Michael O'Halloran then had two chances at the back post. His first effort, a header, was cleared by Paterson and although the rebound fell straight back to the forward he knocked the ball into the arms of Alexander.
Kane replaced John Sutton and was soon tripped inside the box by Pallardo.
Top scorer MacLean stepped up but blasted the ball far too high.
Saints continued to pile on the pressure and Davidson brought out an excellent stop by Alexander.
MacLean also came close to making up for his spot-kick miss but the ball drifted narrowly wide of goal.
The final chance of the game fell Saints' way when Davidson found himself just three yards out with the ball at his feet but again he was denied by Alexander, who was Hearts' saviour on the day.
- 22FisherSubstituted forShaughnessyat 85'minutes
- 24EastonBooked at 90mins
- 11SuttonSubstituted forKaneat 71'minutes
- 16Sutchuin-DjoumSubstituted forMcGheeat 87'minutesBooked at 90mins
- 8BuabenSubstituted forPallardo Gonzalezat 71'minutes
- 10SowSubstituted forReillyat 75'minutes
- 19Delgado LloriaBooked at 28mins
- 14Pallardo Gonzalez
- Kevin Clancy
- Shots on Target
Second Half ends, St. Johnstone 0, Heart of Midlothian 0.
Attempt missed. David Wotherspoon (St. Johnstone) right footed shot from the centre of the box is too high.
Attempt saved. Murray Davidson (St. Johnstone) left footed shot from the right side of the box is saved in the bottom right corner.
Brian Easton (St. Johnstone) is shown the yellow card for a bad foul.
Miguel Pallardó (Heart of Midlothian) wins a free kick in the defensive half.
Foul by Brian Easton (St. Johnstone).
Brian Easton (St. Johnstone) wins a free kick on the right wing.
Foul by Jordan McGhee (Heart of Midlothian).
Corner, St. Johnstone. Conceded by Igor Rossi.
Substitution, Heart of Midlothian. Jordan McGhee replaces Arnaud Djoum.
Attempt saved. Christopher Kane (St. Johnstone) header from the centre of the box is saved in the bottom left corner.
Substitution, St. Johnstone. Joe Shaughnessy replaces Darnell Fisher.
Corner, St. Johnstone. Conceded by Blazej Augustyn.
Attempt missed. Steven MacLean (St. Johnstone) right footed shot from outside the box is close, but misses to the right.
Corner, St. Johnstone. Conceded by Neil Alexander.
Attempt saved. Christopher Kane (St. Johnstone) right footed shot from the centre of the box is saved in the bottom right corner.
Foul by Morgaro Gomis (Heart of Midlothian).
Liam Craig (St. Johnstone) wins a free kick in the defensive half.
Penalty missed! Bad penalty by Steven MacLean (St. Johnstone) right footed shot is too high. Steven MacLean should be disappointed.