But on a day when they weren’t at their best, they still got the job done to take another small step towards a second consecutive championship.
Graham Carey put Saints in front but McCulloch’s leveller within a couple of minutes made it 1-1 at half-time.
Moments after the restart McCulloch was celebrating again after sweeping in his seventh of the season and Nacho Novo clinched the victory in the closing stages.
That means all the pressure is on Celtic again now ahead of their awkward trip to play Falkirk at Westfield Stadium tomorrow.
Manager Walter Smith made two changes to his starting line up after the rousing 1-0 derby victory over Celtic.
Danny Wilson came into the team for the injured Madjid Bougherra and Kyle Lafferty dropped out of the squad altogether, with DaMarcus Beasley replacing him.
There was no place in the side for Old Firm hero Mo Edu and with Lee McCulloch fit again, the American had to make do with a place on the bench.
After the massive high of beating their biggest rivals, it was perhaps to be expected that Gers would be a touch flat initially.
But their levels dipped considerably from what they had shown in the second half against the Parkhead outfit and it took them some time to get going.
Indeed, the Buddies were the better team for long spells of the first half and their tactics were clear from the start.
With five natural defenders on the park, they made themselves hard to get past and looked to break upfield quickly to physical strikers Billy Mehmet and Michael Higdon.
That ploy worked for them early on, with Higdon’s drive in the first couple of minutes from 25 yards only just flashing over the bar.
Soon after the former Falkirk hitman was on the attack again and he caught David Weir out before shooting.
Allan McGregor spread himself well to save but referee Charlie Richmond pulled play back for a tug by Weir and the veteran was lucky to concede a free kick rather than a penalty.
Thankfully it came to nothing and with that Rangers set about trying to inject some life into their performance.
Kevin Thomson had a go from long range but his shot lacked pace and although it was on target, Paul Gallacher held well.
Kris Boyd was next to come forward and when he found space, it took a crucial Lee Mair tackle to spin his wicked shot away for a corner rather than towards the net.
Back came Saints, with McGregor having to react well again to stop Steven Thomson after he got in on Weir’s blind side after being played through by David Barron.
Higdon also tried his luck and connected with Mehmet’s knock down after a long ball upfield by Chris Innes but he was well off target.
Gers came as close as anyone to scoring with the half-hour mark approaching as they hit the upright twice within a few seconds.
First of all, Steven Davis bent an excellent free kick from fully 30 yards towards the back post and was so unlucky to see it crash off the crossbar.
Beasley then won the rebound and after sliding back to Davis, his first-time pass found Sasa Papac but the Bosnian’s drive clattered off the woodwork again.
Where the Light Blues’ Northern Ireland midfielder couldn’t convert, Carey certainly could with a third of the game gone.
St Mirren were awarded a dubious free kick when Weir and Higdon collided 35 yards out and the decision seemed soft.
Regardless, Carey – on loan from Celtic – made the most of his opportunity and curled around the wall to put the visitors in front.
McGregor had no chance of reaching it and in his defence, he seemed to have been unsighted when the shot came in.
Falling behind seemed to lift Rangers from their malaise at last and within just two minutes they were level again.
McCulloch was the man to give them parity once more, hitting home the rebound after a decent save from Gallacher.
Having found a way past the stubborn visiting defence, the hosts set about trying to go ahead and finished the half strongly.
Wilson forced a corner from Gallacher when he threatened to nod in at the back post and Weir also had an effort scrambled off the line.
But it wasn’t until after the break that Gers went in front and again it was McCulloch who netted.
He produced a great finish as he swept home a controlled, low drive from the edge of the area after Miller’s lay-off.
Beasley was lively without always being terribly effective but one of his last contributions was to hit Gallacher’s post before being replaced by Nacho Novo.
Edu also came on for Thomson but while Rangers were freshening things up, they certainly weren’t out of sight.
And although they led, things were becoming decidedly tetchy as St Mirren began to creep further into the champions’ half for longer periods.
But just as manager Smith prepared to throw Steven Naismith on to lift things again, they went further ahead with 12 minutes left.
Davis swung in a deep free kick from the left touchline and after Mair went up for it and missed, Novo stole in from three yards to make it 3-1.
With a bit of daylight between them and the Paisley team, the onus was on Rangers to add to their scoreline.
Edu’s rasper was fierce but off target while Boyd, chasing his 100th league goal for the club, was unusually quiet and well marshalled.
Novo had a good claim for a penalty turned down when the ball seemed to strike Mair’s arm but nothing was given and Steven Whittaker’s piledriver shot just wide.
Neither instance mattered much. As Queen’s ‘Another One Bites The Dust’ echoed around the ground at full-time, the title was that little bit closer to coming home again.