Jamie Vardy opened the scoring before Wes Morgan added a second after the break, as they created a relatively comfortable cushion.
However, a superb Leroy Fer header halved the deficit and made for a few nervy moments in a the deluge at the King Power Stadium.
A goal that had always been coming
After Swansea had enjoyed a few forays into the Leicester half, the hosts began to revert to their usual game. Danny Drinkwater was doing his utmost to get Vardy in behind the Swans' backline, but for Federico Fernandez to catch up to the first attempt well. The second, however, saw him haul Vardy down and pick up a yellow card in the process.
Drinkwater and Vardy were proving constant thorns in the Swansea side, not allowing them time to settle. Riyad Mahrez and Danny Simpson could have been the beneficiaries of their hard work - as well as Shinji Okazaki - but poor finishing cost the Foxes an early advantage.
With play mirroring last season, it was almost inevitable that it would be the Drinkwater to Vardy pass that paid dividends. The midfielder took aim from inside his own half and played in Vardy, who controlled well before biding his time and volleying in off the inside of the post to open the scoring.
That goal seemed to spark Swansea into life, especially Modou Barrow, but it was too little too late and the half-time whistle went before they could build up a head of steam.
Hosts hold on for deserved win
The half-time break saw the awful weather relent but Leicester step up their charge, and find a second goal. It was far from pretty as Mahrez's corner was met by Morgan, before bobbling up kindly after hitting Robert Huth. It sat perfectly for the skipper, who duly slammed home a thunderous finish to double his side's lead.
Kasper Schmeichel then cut out a pass meant for Fernando Llorente moments later, and his clearance meant mayhem in the Swans' defence. Vardy and Okazaki were hassling Jordi Amat, and the Spaniard eventually tripped Okazaki to hand Leicester a penalty. Lukasz Fabianski, however, came to Amat's rescue with a good save to his left.
Ron-Robert Zieler was brought on as Schmeichel's replacement immediately afterwards, but his first job was picking the ball out of the net. He had to wait 23 minutes for his first meaningful moment, but he had no chance in saving Fer's header after a lovely run and cross from the troublesome Barrow. That was as good as it got, however, and Leicester ran out with all three points.