Cliftonville came from a goal behind to condemn Linfield to their second successive home league defeat and move to the top of the Irish Premiership.
Mark McAllister stooped to head in for the Blues against the run of play in the 61st minute after the striker met a corner from defender Niall Quinn.
Liam Boyce levelled by heading home after beating Alan Blayney to a long ball two minutes later.
George McMullan grabbed the winner by touching in from one yard out after 68.
Linfield enjoyed the majority of the possession in an uneventful first half, with Brian McCaul firing a low shot wide of the post early on.
The Reds came more into the game after the break and after the opening two goals, McMullan scored the winner after Barry Holland played the ball across the goal.
Cliftonville could have added to their tally but Blayney made a fine save from Joe Gormley's deflected shot and McMullan headed over the bar.
The visitors head the table on goal difference from Coleraine, who played out a scoreless draw with Glentoran at the Oval.
David Jeffrey's side now lie eighth in the table and face a testing trip to Mourneview Park to play an improving Glenavon side next Saturday.