Rangers lost more ground in the Scottish Premiership title race as Caolan Boyd-Munsey struck late on to give St Mirren a deserved 2-1 win.
Philip Clement took his side to Paisley aiming to make it five wins in a row to avoid falling further behind in the Scottish Championship title race.
After losing Leon Balogun early to injury, their night took a different turn when Butland clattered Greg Kielty with an immediate VAR penalty that upheld the decision. Oisin Smith stepped up and made no mistake.
Danilo and Nico Ruskin were brought on after the break as the intensity increased and they combined to equalize as the Brazilian defender pounced on the ball after Ruskin’s effort was blocked.
There was another twist when Boyd-Mans fired Evan Mooney’s cross into the bottom corner, sparking wild celebrations as St Mirren beat Rangers for the first time in 13 years.
The result leaves Rangers 12 points clear of leaders Celtic and St Mirren move up to fifth.
More bad luck for Rangers
The early stages were all hustle and bustle until Balogun got injured.
However, the first real goal-scoring action came when Butland ran out of place and unconvincingly to unload Kilty on the ground as the Saints man went to take possession of a long ball.
Referee David Dickinson immediately pointed to the spot and Smith, who won the penalty against Ross County on Saturday, sent the penalty the wrong way at the keeper.
Clement and Vaclav Cerny were immediately booked by Dickinson for taking too long on St Mirren’s Marcus Fraser, who blocked Hamza Igamane’s run without penalty.
Saints goalkeeper Ellery Balcombe didn’t have a save until he collected a neat shot from the Moroccan striker just before the break.
Clement had to step up and he brought on Ruskin and Danilo for Baron and Bajrami and there was an instant improvement.
Skipper James Tavernier went close with a 25-yard free-kick and then Balcombe saved Danilo’s shot before Cerny hit the post with a right-footed shot.
But after a goal-line save from Danilo, Balcombe was eventually beaten from close range by the Gers substitute as the St Mirren goal continued under siege.
Igamane struck after combining with Cerny, who then headed in from distance that just cleared the bar.
At the other end, Saints substitutes Alex Iacoviti and Robin Propper pounced on the corner and the ball was deflected off the near post.
The game went from end to end.
A mistake by the prop allowed Olusanya to run free, but Ruskin came back to clear the danger.
In the usual flurry of substitutes, 17-year-old Calum Penman and Evan Mooney replaced John and Olusanya, but it was another substitute, Boyd-Munsey, who proved the game-winner in the third of six added minutes.
He met a Mooney pass and fired a low shot past Butland from 20 yards to sink the Gers.
Clement: “Rangers lost three points”
Rangers manager Philip Clement talking to Sky Sports News:
“Today we threw away the three points ourselves.
“In the first half, we didn’t show enough quality on the ball, but we also lost a lot of tackles and scored a goal that we shouldn’t have conceded.
“You created a lot of belief in the opponent, that’s why I was so angry at half-time.
“I didn’t see that performance coming after the consistency we’ve shown over the last two months.
“We made changes and in the second half the team responded in the right way and we have to show that every time.”
“No fear” for St Mirren
Saint Mirren boss Stephen Robinson on Sky Sports News:
“I thought we were excellent in the first half, really aggressively pressed Rangers, had a lot of chances and deservedly went 1-0 up.
“We didn’t start the second half the way we wanted. Rangers came at us, as you would expect a good team to do, and created chances.
“We had to change it and respect the subs who came on, they changed the game and the never-say-die attitude is to be admired.
“We proved that we don’t need to be afraid of anybody. If you go and play with that intensity, you can go and cause problems for a lot of teams.”