Match ends, Inverness CT 0, St. Johnstone 1.
Inverness were left rueing their failure to make a numerical advantage count as Liam Craig's stoppage-time penalty gave St Johnstone victory.
Saints were reduced to 10 men early in the second half when Dave Mackay saw red for a challenge on Carl Tremarco.
The visitors defended well with goalkeeper Alan Mannus rarely tested despite the home side's greater share of possession.
And Craig won and converted a spot-kick to give the visitors all three points.
Tommy Wright's men maintain their sixth-place position in the table and open up a four-point gap over Inverness Caledonian Thistle.
St Johnstone started brightly and Murray Davidson flicked wide a Graham Cummins cross.
Their creativity waned, however, and Caley Thistle goalkeeper Owain Fon Williams hitting a clearance against Steven MacLean was their only other first-half attacking highlight.
Inverness manager John Hughes described last week's second-half performance as the worst he had seen since coming to the club and it took 35 minutes for their first meaningful attempt at goal when James Vincent connected with Tremarco's low cross but his shot was blocked.
And only a skilful intervention by Michael O'Halloran denied Tremarco a shooting opportunity after he was sent clear into the box.
The first half was underwhelming but the second opened with controversy as Saints captain Mackay was ordered off for a firm challenge on Tremarco.
Referee Don Robertson was well placed to make the call but St Johnstone were clearly aggrieved by the decision to send the defender off.
The visitors maintained a goal threat with O'Halloran trying to make the most with every pass that came his way and his replacement Chris Kane almost scored with a long-range effort.
Inverness may have dominated possession but they rarely dominated the last third.
And, after Devine took down Steven MacLean's replacement Craig in the box, the midfielder sent the goalkeeper the wrong way from 12 yards to take the three points back to Perth.
- 25Fon Williams
- 14DevineBooked at 90mins
- 6MeekingsBooked at 86mins
- 20PolworthSubstituted forSutherlandat 88'minutes
- 19WilliamsSubstituted forVigursat 71'minutes
- 2MackayBooked at 47mins
- 3ScobbieBooked at 66mins
- 18CumminsSubstituted forEastonat 53'minutes
- 29O'HalloranSubstituted forKaneat 78'minutes
- 9MacLeanSubstituted forCraigat 71'minutes
- Don Robertson
- Shots on Target
Second Half ends, Inverness CT 0, St. Johnstone 1.
Danny Devine (Inverness CT) is shown the yellow card for a bad foul.
Goal! Inverness CT 0, St. Johnstone 1. Liam Craig (St. Johnstone) converts the penalty with a left footed shot to the top left corner.
Penalty St. Johnstone. Christopher Kane draws a foul in the penalty area.
Penalty conceded by Danny Devine (Inverness CT) after a foul in the penalty area.
Foul by Josh Meekings (Inverness CT).
Christopher Kane (St. Johnstone) wins a free kick in the defensive half.
Hand ball by James Vincent (Inverness CT).
Attempt missed. David Raven (Inverness CT) right footed shot from outside the box is just a bit too high.
Substitution, Inverness CT. Alisdair Sutherland replaces Liam Polworth.
Corner, Inverness CT. Conceded by Liam Craig.
Josh Meekings (Inverness CT) is shown the yellow card for a bad foul.
Attempt missed. Tam Scobbie (St. Johnstone) left footed shot from outside the box is just a bit too high from a direct free kick.
Foul by Josh Meekings (Inverness CT).
Christopher Kane (St. Johnstone) wins a free kick in the attacking half.
Ryan Christie (Inverness CT) wins a free kick on the left wing.
Foul by Liam Craig (St. Johnstone).
Attempt missed. Christopher Kane (St. Johnstone) right footed shot from outside the box is just a bit too high.
Substitution, St. Johnstone. Christopher Kane replaces Michael O'Halloran.