Match ends, St Mirren 4, St Johnstone 3.
Steven Thompson's late winner ensured this all-Saints clash ended with the Buddies' first home win of the season.
Kenny McLean opened the scoring for St Mirren, but it was quickly cancelled out by Steven MacLean.
Paul McGowan and McLean twice put the Buddies ahead, with the visitors' Frazer Wright dismissed.
Nigel Hasselbaink and Rory Fallon took turns to reply, but Thompson had the final say and St Mirren go three games unbeaten.
That is seven points from nine for Danny Lennon's side and, while they remain in 10th place in the Scottish Premiership, the win was important given second-bottom Kilmarnock's victory over Ross County.
Had St Mirren captain Jim Goodwin not had a second-half penalty saved it could have been more comfortable.
For Tommy Wright's Perth charges, it is their first defeat in four matches and they lie seventh in the league as their early season inconsistency continues.
There was only the letter A of a difference between the first two goalscorers in Paisley and there was not much to separate their teams either.
Both sides looked to play neat and tidy football where possible and most of the goals were end products of intelligent play.
St Mirren's McGowan, playing in between middle and front, produced an intricate, short pass to find McLean, who duly finished in a composed manner into the bottom right corner past St Johnstone goalkeeper Alan Mannus.
But their lead was short-lived thanks to equally impressive approach play by St Johnstone.
Hasselbaink ran infield from the left and exchanged passes with Stevie May before the Dutchman's shot-come-cross was converted by the sliding MacLean for his fourth goal of the season.
On loan Newcastle midfielder Conor Newton launched more than one exciting counter-attack for the hosts, but the visitors almost took the lead before the break.
An excellent high diving save by Buddies goalkeeper Chris Dilo turned away Hasselbaink's curling effort. It was not the only time Frenchman Dilo looked assured between the sticks.
St Mirren went in front for the second time when Lee Mair's through ball allowed McGowan to side-foot softly and calmly past Mannus from 10 yards.
However, St Johnstone clawed themselves back into it again, mainly thanks to persistent running and skill from Chris Millar down the right, teeing up Hasselbaink to thump low into the net.
The pendulum looked to swing in the hosts' favour again when St Johnstone's Gary McDonald fouled McLean in the box and referee Willie Collum awarded a penalty. But Goodwin's kick was saved by Mannus.
That wasted opportunity was followed by a new one for St Mirren, though, as Wright saw red for a last-man tangle with McGowan and another spot-kick was given.
This time, McLean stepped up and converted it emphatically.
Refusing to give up, the Perth side equalised for the third time when former Aberdeen striker Fallon popped up at the back-post to tap in Stevie May's cross.
However, Thompson ensured Lennon's men had the last say, hooking in Darren McGregor's headed knock-down from a deep free-kick to seal a dramatic win.
- 2van ZantenBooked at 61minsSubstituted forCapriceat 68'minutes
- 6GoodwinBooked at 90minsSubstituted forHarkinsat 90+5'minutes
- 5WrightBooked at 75mins
- 8McDonaldSubstituted forFallonat 80'minutes
- 9MacLeanSubstituted forCreggat 86'minutesBooked at 88mins
- 11HasselbainkSubstituted forScobbieat 77'minutes
- William Collum
- Shots on Target
Second Half ends, St Mirren 4, St Johnstone 3.
Chris Millar (St Johnstone) wins a free kick in the defensive half.
Foul by Jake Caprice (St Mirren).
Substitution, St Mirren. Gary Harkins replaces James Goodwin.
James Goodwin (St Mirren) is shown the yellow card.
Patrick Cregg (St Johnstone) wins a free kick in the defensive half.
Foul by James Goodwin (St Mirren).
Attempt missed. David Mackay (St Johnstone) right footed shot from outside the box is high and wide to the right.
Goal! St Mirren 4, St Johnstone 3. Steve Thompson (St Mirren) right footed shot from very close range to the bottom left corner. Assisted by Darren McGregor.
Patrick Cregg (St Johnstone) is shown the yellow card.
Foul by Patrick Cregg (St Johnstone).
Kenny McLean (St Mirren) wins a free kick in the defensive half.
Substitution, St Johnstone. Patrick Cregg replaces Steven MacLean.
Goal! St Mirren 3, St Johnstone 3. Rory Fallon (St Johnstone) right footed shot from the right side of the six yard box to the top right corner. Assisted by Steve May.
David Wotherspoon (St Johnstone) wins a free kick in the defensive half.
Foul by James Goodwin (St Mirren).
Corner, St Johnstone. Conceded by Lee Mair.
Substitution, St Johnstone. Rory Fallon replaces Gary McDonald.
Hand ball by Paul McGowan (St Mirren).