Caley right-back David Raven was shown a straight red card by referee Craig Thomson in the 11th minute for a 'last-man' challenge on Perth forward Rowan Vine but the home side struggled to make the most of the advantage during a mostly turgid game.
Saints did hit the post and the bar in the first half but did not get the breakthrough until the 77th minute when MacLean headed in after good work on the left by substitute Nigel Hasselbaink, on 20 minutes earlier for Gregory Tade.
Steve Lomas's side moved on to 50 points, one behind third-placed Caley and one ahead of Ross County with three games remaining as they also made it 10 home games unbeaten although that fine form was not reflected in the attendance.
The noon kick-off had impacted on the crowd with just 2,368 - the second-lowest home SPL crowd of the season - inside the stadium at kick-off time.
Amid a tepid start to the match, Daniel Devine was booked for a reckless challenge on Vine in the sixth minute, leaving the Caley defender having to be careful for rest of the match.
However, it was Raven who departed the scene soon afterwards when a poor goal-kick from keeper Antonio Reguero had Inverness in trouble.
Vine raced through on goal from Chris Millar's pass only to be stopped by the Caley full-back with referee Thomson deeming the challenge to be preventing a clear goal-scoring opportunity even though the Saints player was 30 yards from goal.
As the Highlanders tried to re-organise themselves - with Graeme Shinnie moving back into defence from midfield, Josh Meekings moving to right-back and Charles Taylor moving into the centre of defence - Reguero had to rush from his goal to save from Mehdi Abeid.
St Johnstone forward Gregory Tade flicked a leg out from a Tam Scobbie cross and hit the post in the 23rd minute as the home side began to slowly crank up the pressure.Adding to Inverness boss Terry Butcher's rage, Taylor was booked minutes later for a foul on MacLean.
Reguero made a fine save at his left-hand post from Vine's powerful free-kick, with Caley surviving the subsequent corner.
In the 28th minute Abeid curled a shot which beat Reguero only to see the ball crash off the bar, with Caley trying to clear the ball before Saints skipper Dave Mackay eventually drilled the ball wide of the target from the edge of the box.
The second-half saw little improvement.
St Johnstone stopper Steven Anderson headed a Liam Craig corner past the far post in the 54th minute which added only to the home side's growing frustration.
In the 68th minute, after Caley midfielder Ross Draper had clumsily fouled Vine 25 yards out, Craig's curling free-kick drew another fine save from Reguero but yet again nothing came of the corner.
St Johnstone's goal came as a result of perhaps the best piece of play of the afternoon.
Hasselbaink skinned Meekings on the left touchline and then went past Caley substitute Nick Ross, on for Billy McKay, in the box before planting a cross on to the head of MacLean who had the easiest of tasks in heading in from four yards out.
Caley threw caution aside in search of the equaliser but the home side held out comfortably and, with some composure on the break, might have added to their lead.
- Sports & Recreation
- Rowan Vine
- Antonio Reguero
- Nigel Hasselbaink
- Gregory Tade