The goal was engineered by Nigel Hasselbaink, who burst down the left touchline and drifted into the box before crossing with the outside of his foot for MacLean to send Antonio Reguero the wrong way with his header from eight yards.
Caley Thistle lost David Raven with just 12 minutes on the clock as he tugged back Rowan Vine who was put clean through by MacLean’s quick pass after Reguero’s goal-kick went straight to the Saints striker.
St Johnstone almost broke the deadlock when a cross from Tam Scobbie dropped in front of Gregory Tade, and the former Thistle striker clipped the ball off the post.
Reguero then came to Thistle’s rescue when he turned a fierce Vine free-kick from 25 yards around the post, although the defensive wall offered no protection to the keeper.
Two minutes later Mehdi Abeid cut into the penalty area from the left flank and thundered a shot off the underside of the bar as the visitors survived another scare.
Tade sliced a shot wide from 16 yards just after the break and Steven Anderson headed inches wide at the back post from Liam Craig’s corner.
Minutes later Owain Tudur Jones finally tested Alan Mannus with a shot from distance straight at the Saints keeper.
But MacLean’s goal takes St Johnstone to within a point of the Highlanders in the race for a Europa League qualifying spot.