The England striker fired in off the post from Danny Drinkwater's ball before Wes Morgan volleyed in from a right-wing corner after the break.
Leicester's Riyad Mahrez had a penalty saved by Lukasz Fabianski, who also blocked Shinji Okazaki's follow-up.
Swansea pulled one back when Leroy Fer headed in from Modou Barrow's cross.
How these players managed to produce a good show in relentless torrential rain is remarkable.
Heavy rain coupled with thunder and lightning added an extra dimension to proceedings, which Leicester coped with better than their opponents.
Vardy, who barely had a sniff of a chance in the opening two league games, gave Claudio Ranieri's side the lead with a very typical Leicester goal.
One-touch football on the edge of their own area, involving Daniel Amartey, resulted in Drinkwater playing a long through-ball for Vardy to chase. The 29-year-old latched on to it and thumped home his shot via the woodwork.
It was the minimum the Foxes deserved having dominated possession, and they increased their lead after half-time when captain Morgan lashed in a fierce volley.
The defending champions should have made it 3-0 but Fabianski guessed where Mahrez would place his spot-kick after Okazaki had been fouled in the area by Jordi Amat. The Japanese forward then saw his follow-up saved by the Polish keeper.
Francesco Guidolin's side had gone AWOL as an attacking force during the first 30 minutes of this game as Leicester harried and pushed them back.
Bar a couple of tame Gylfi Sigurdsson efforts, it appeared it might be a case of how many Leicester would score after Morgan made it 2-0.
But then the Swans clicked into gear. Gambian winger Modou Barrow, who was sensational down the right and put in a handful of great deliveries, was justly rewarded for his efforts when Dutch midfielder Fer got on the end of another peach of a cross in the 81st minute.
Foxes full-back Danny Simpson also had to be on hand to clear another Barrow cross, with striker Fernando Llorente poised in the area.
Leicester's number one Kasper Schmeichel had little to do in the game, but his one vital interception resulted in him coming off the pitch.
The Danish goalkeeper was at his sharpest as he rushed out to beat Fernando Llorente to the ball, but he appeared to hurt himself in doing so.
Schmeichel signalled to the bench as the penalty drama played out in the Swansea box, and was soon replaced by summer signing Ron-Robert Zieler.
After the game, Ranieri said Schmeichel had aggravated a hernia, but should not be out for long.
"He has a small hernia," the manager said. "He was due for an operation on Monday, but he should be ready for our next match."
Schmeichel will have a two-week recovery period after his surgery, with Leicester's next game on 10 September at Liverpool.
Alan Shearer: "I thought it was nonsensical to not have Danny Drinkwater in the squad for the Euros when other players were not fit.
"Against Swansea he had more passes, more touches and covered more distance than anyone else - he was just superb.
"His weight of pass for Jamie Vardy's goal was absolute perfection - it was just screaming out for someone with pace to go and get on the end of it.
"He was brilliant last season and he is full of confidence."
Media playback is not supported on this device
Leicester manager Claudio Ranieri: "I am very happy. We played very well in the first half. In the second half we could have closed the match, but missed a penalty and in the end we complicated our life. But it was a good three points and I'm very happy.
"These three points are very important for us because we lost the first match - we've now taken four points from two matches at home, which is OK.
"The draw against Arsenal was OK and today was a good performance. I am glad.
"We have a very good platform. We wanted to keep all our players. It wasn't possible and one went away but it's OK. We are happy and now we start our season."
Media playback is not supported on this device
Swansea boss Francesco Guidolin: "In my opinion Leicester deserved to win because they played very well in the first half and we didn't.
"But in the second part of the game I saw my team play better and the result was 50-50 at the end.
"Leicester is a strong team like last season, one of the best teams in the Premier League. I am confident because my team is a good team. We can play better.
"For us it was not a good match in the first half. But after that we played with more courage and aggression and we had the opportunities to draw. But I am honest and Leicester deserved to win.
"In my career I played with these conditions. It's not the first time but today was very difficult to play and stay on the bench. It was not a good day for the weather. We are used to it because in Wales the weather is not very good."
Leicester are at Anfield after the international break and Swansea are at home to Chelsea on Sunday 11 September.
Match ends, Leicester City 2, Swansea City 1.
Second Half ends, Leicester City 2, Swansea City 1.
Attempt saved. Ahmed Musa (Leicester City) left footed shot from outside the box is saved in the bottom right corner. Assisted by Riyad Mahrez.
Offside, Leicester City. Riyad Mahrez tries a through ball, but Daniel Drinkwater is caught offside.
Attempt missed. Riyad Mahrez (Leicester City) left footed shot from the centre of the box is close, but misses to the left. Assisted by Daniel Drinkwater following a fast break.
Corner,  Swansea City. Conceded by Danny Simpson.
Corner,  Swansea City. Conceded by Christian Fuchs.
Ahmed Musa (Leicester City) wins a free kick in the defensive half.
Foul by Modou Barrow (Swansea City).
Hand ball by Christian Fuchs (Leicester City).
Substitution, Swansea City. Oliver McBurnie replaces Jack Cork.
Goal!  Leicester City 2, Swansea City 1. Leroy Fer (Swansea City) header from the centre of the box to the bottom right corner. Assisted by Modou Barrow with a cross.
Substitution, Leicester City. Leonardo Ulloa replaces Shinji Okazaki.
Shinji Okazaki (Leicester City) wins a free kick on the left wing.
Foul by Kyle Naughton (Swansea City).
Foul by Wes Morgan (Leicester City).
Fernando Llorente (Swansea City) wins a free kick in the attacking half.
Substitution, Leicester City. Ahmed Musa replaces Marc Albrighton.
Attempt missed. Leroy Fer (Swansea City) right footed shot from outside the box misses to the right. Assisted by Jefferson Montero.
Attempt blocked. Shinji Okazaki (Leicester City) right footed shot from the centre of the box is blocked. Assisted by Riyad Mahrez.
Corner,  Swansea City. Conceded by Christian Fuchs.
Foul by Daniel Amartey (Leicester City).
Ki Sung-yueng (Swansea City) wins a free kick in the defensive half.
Attempt missed. Leroy Fer (Swansea City) header from the centre of the box misses to the right. Assisted by Ki Sung-yueng with a cross following a corner.
Corner,  Swansea City. Conceded by Danny Simpson.
Danny Simpson (Leicester City) is shown the yellow card for a bad foul.
Foul by Danny Simpson (Leicester City).
Jefferson Montero (Swansea City) wins a free kick on the left wing.
Offside, Leicester City. Daniel Drinkwater tries a through ball, but Shinji Okazaki is caught offside.
Attempt missed. Jamie Vardy (Leicester City) right footed shot from outside the box is high and wide to the right. Assisted by Daniel Amartey.
Attempt missed. Wes Morgan (Leicester City) left footed shot from the left side of the six yard box misses to the left. Assisted by Marc Albrighton with a cross following a set piece situation.
Leroy Fer (Swansea City) is shown the yellow card for a bad foul.
Riyad Mahrez (Leicester City) wins a free kick in the attacking half.
Foul by Leroy Fer (Swansea City).
Foul by Jamie Vardy (Leicester City).
Leroy Fer (Swansea City) wins a free kick in the defensive half.
Corner,  Leicester City. Conceded by Jordi Amat.
Foul by Daniel Amartey (Leicester City).
Leroy Fer (Swansea City) wins a free kick in the defensive half.
Attempt missed. Modou Barrow (Swansea City) left footed shot from outside the box is high and wide to the left. Assisted by Leroy Fer.
Jamie Vardy scored his first goal of the season to help champions Leicester record their first win with victory over Swansea in very wet conditions.