League 1 leaders Rangers were given a major scare by Arbroath before twice coming from behind to win 3-2 at Ibrox.
David Banjo and Bobby Linn netted for Paul Sheerin's side but Jon Daly and David Templeton replied and Lee McCulloch grabbed the winner with a 78th-minute penalty.
Brechin City hit back from two goals down to beat second-placed Dunfermline 3-2 at Glebe Park. Lawrence Shankland and Ryan Wallace had the Pars in command but goals from Derek Carcary, Andy Jackson and Darren Petrie turned the game round.
Frank McKeown earned third-placed Stranraer a 1-1 draw at bottom club Airdrieonians, who had gone ahead through Jim Lister.
Ayr, in fourth, drew 1-1 at Stenhousemuir. Ross McNeil grabbed a last-minute equaliser for the Warriors after Craig Malcolm had given the visitors the lead.
East Fife rallied to beat Forfar 2-1 at Bayview with goals from new boys Marc McKenzie and Stephen O'Neill after Gavin Swankie had opened the scoring.