Falkirk coped better with atrocious conditions to deservedly end Rangers' unbeaten run thanks to a Marc Twaddle headed goal after 26 minutes.
Marc Twaddle put Falkirk ahead against Rangers
Home keeper Jeroen Lambers produced a fine save to deny Nacho Novo, while Rangers' Allan McGregor cleared a Brahim Hemdani pass off his own line.
But Twaddle broke the deadlock, heading in off the post following a corner.
Both sides missed second-half chances to score as Falkirk ended a 35-year wait to beat Rangers in the league.
The Bairns had gone into the game without top scorer Anthony Stokes, the on-loan Arsenal striker being suspended along with Stephen O'Donnell and Steven Thomson.
John Stewart deputised up front against an unchanged Rangers chasing their fourth successive win in the Scottish Premier League.
But it was the Glasgow side who threatened first, a Novo hitch-kick from six yards following a corner being palmed clear by Lambers.
Another corner caused problems for the home defence and Dado Prso sent a header just over.
Rangers' defence had appeared to improve in recent weeks, but they began to show signs of fragility.
Hemdani had McGregor to thank for preventing an own goal when the defender mis-directed his back-pass and the goalkeeper raced back to clear off the line.
And poor marking allowed Twaddle to meet Russell Latapy's corner and head home the opening goal off the post from 12 yards despite Jeremy Clement's effort to clear the ball off the line.
Rangers were still a threat up front and Lambers produced a fine, one-handed save from a deflected Novo drive.
But Falkirk were the more dangerous and McGregor did well to push away Liam Craig's effort from 18 yards at full stretch.
Rangers' cause was not helped by the loss of top scorer Kris Boyd to injury just before the break.
Rangers captain Barry Ferguson was left to reflect on defeat
And his replacement, Filip Sebo, squandered the first chance after the break when he failed to respond to Prso's pass across the face of goal after the striker had rounded the advancing goalkeeper.
Falkirk missed a glorious chance of their own when a clever through ball from Latapy put Stewart clear.
The striker's touch beyond the advancing McGregor was too strong and the ball squirmed over for a goal kick.
Novo had a shot deflected across the face of goal and Lambers did well to beat away an attempt from substitute Thomas Buffel.
McGregor stretched to turn a wickedly dipping Latapy free-kick and, from the corner, a challenge on the goalkeeper led to a goalmouth scuffle that led to a booking for Falkirk's Darren Barr.
Prso headed over from close range, while a Latapy drive was a couple of feet too high and fellow man-of-the-match Alan Gow fired straight at McGregor.
But there was no further scoring as second-top Rangers remained 16 points behind leaders and holders Celtic.
Falkirk: Lambers, Ross, Twaddle, Barr, Milne, Latapy, Cregg, Lima, Craig, Gow, John Stewart (Dodd 84).
Subs Not Used: Higgins, Uras, Mcstay, McManus, Scobbie, Mark Stewart.
Goal: Twaddle 26.
Rangers: McGregor, Hutton, Papac (Buffel 59), Hemdani, Svensson, Ferguson, Clement, Adam, Novo, Prso (Sionko 83), Kris Boyd (Sebo 45).
Subs Not Used: Klos, Rae, Smith, Lowing.
Booked: Adam, Novo, Clement.
Ref: S Dougal