Vardy, who scored 24 league goals last season, miskicked horribly after new signing Ahmed Musa had darted down the left to roll the ball back to him 16 yards from goal.
After Danny Drinkwater had screwed wide from Mahrez’s inviting right-wing cut-back, Vardy was then thwarted by some dogged Hull defending.
Christian Fuchs got clear after playing a one-two with Musa and, when goalkeeper Eldin Jakupovic raced out to block, the ball ran loose to Vardy – but Jake Livermore threw his body in the way of the shot.
Vardy, part of the England team beaten in the last 16 by Iceland at Euro 2016, then skied an easy chance after Musa had dashed past the flat-footed Curtis Davies.
Hull rode the pressure, though, and took the lead in the second minute of first-half stoppage time.
Kasper Schmeichel clawed out Davies’ near-post header from a Snodgrass corner, but Diomande’s overhead kick flew into the net.
Leicester responded immediately after halftime, winning a penalty within 20 seconds of the restart as Tom Huddlestone was judged to have clipped Demarai Gray inside the area.
Television replays suggested the contact may have been outside the area, but Mahrez sent Jakupovic the wrong way with a cool spot-kick.
However, spluttering Leicester were only level for 10 minutes.
Ahmed Elmohamady was quick to intercept a Schmeichel throw, and raced down the right to create space for a cross that Danny Simpson half-cleared, before Snodgrass drove in the loose ball.
Ranieri’s response was to throw on Shinji Okazaki and Daniel Amartey in a bid to find an equaliser, and Mahrez almost delivered with a 25-yard free-kick that Jakupovic shovelled away.
Snodgrass almost caught out Schmeichel with a free-kick from wide out on the right, which the goalkeeper had to beat away at his near post.
By the time the match entered its closing stages, the Hull fans were singing ‘Can’t Help Falling In Love With You’ and chanting ‘We are top of the league’.