Chelsea had been dominant before the break and struck the bar through Eden Hazard following a Harry Maguire error – the best of a host of chances.
But having gone behind, it was Sarri’s side who became sloppy as Leicester grew in strength having resisted heavy pressure.
The Foxes would have doubled their lead but for Cesar Azpilicueta’s sliding block to deny Vardy after Kepa Arrizabalaga spilled a cross, before the keeper saved well from Marc Albrighton.
Chasing a goal of their own, Chelsea struggled to break their opponents down before missing two key late chances.
In the 89th minute, Antonio Rudiger nodded just wide from a corner, before Marcos Alonso struck the post with only the keeper to beat two minutes later.
“We played well for 55 minutes,” Sarri told BBC Sport.
“I think that, of course, in some situations we were unlucky but we could have done something better.
“After the goal the reaction was not the right reaction. We reacted a little shocked and with mental confusion. We had to only keep playing like we did before the goal, there was time to recover.”
The Blues had not lost at home since 1 April, against Tottenham, and this defeat leaves them level on points with fifth-placed Arsenal, who beat Burnley 3-1 earlier on Saturday. They trail leaders Liverpool by 11 points.
For Leicester, the win moves them up to ninth in the table and is their first victory from 11 matches in London.