Substitute Islam Slimani wasted two good opportunities after half-time but another impressive display by Paul Clement's improving Swansea secured three vital points for the hosts.
A fourth victory in six league games for the Swans sees them leapfrog Leicester into 15th, four points above the relegation places, while Claudio Ranieri's side drop to 17th, just one point above Hull City.
The two clubs started the game precariously positioned above the drop zone but the hosts made light work of their relegation rivals, leaving Ranieri's title-winners in deep trouble.
Having publicly backed their manager at the start of the week, they have now become the first champions to lose five straight games in a season since Chelsea in 1956 and are still without a league goal in 2017.
An FA Cup fourth-round win over Derby was supposed to provide the platform for a Premier League revival but they were second best at the Liberty.
Only Demarai Gray and Marc Albrighton kept their places from that cup victory, with the likes of Riyad Mahrez and Jamie Vardy restored to the starting eleven.
Despite their proximity in the table, Swansea's form had been trending in the right direction, with wins over Liverpool and Southampton followed by a commendable performance at Manchester City.
Clement decided against wholesale changes, introducing Nathan Dyer for Wayne Routledge in his only alteration from the 2-1 defeat at the Etihad.
But his plans hit an early setback when the former Leicester winger hobbled off after a non-contact injury, with Dyer's damaged left foot later placed in a protective boot.
It meant a swift recall for Routledge, who drew a smart stop from Kasper Schmeichel with Swansea's first opening after 30 minutes.
They took the lead six minutes later as Federico Fernandez kept alive a long free-kick, with Mawson given the freedom of the penalty area to lash home on the volley.
It put the onus on Leicester to attack but not for the first time this season they struggled to get Mahrez and Vardy involved, failing to register a shot on target in the first half.
It got worse just before the break as Albrighton switched off when Schmeichel's poor throw put Leicester under pressure, allowing Olsson to smash in a second at the near post.
The half-time introduction of Slimani and Ben Chilwell brought an improvement from the visitors, with the Algerian striker squandering two fine chances in quick succession on the hour-mark.
In a move reminiscent of last season's trademark counter-attacks, Vardy and Mahrez first combined to cut open the Swans defence only for Lukasz Fabianski to save well from Slimani's low finish.
The forward barely had time to process the miss before another opportunity arrived. Again it was courtesy of Mahrez, but this time Slimani failed to make contact with a teasing cross, leaving the striker to pound the ground in frustration.
Then, when Vardy was presented with a clear sight of goal in the penalty area, the England man miscued high and wide.
It summed up the afternoon for Leicester, who tested Fabianski just once across the 90 minutes and have gone more than 10 hours without scoring in the league.
They now face an FA Cup fifth-round tie against Millwall next Saturday before a Champions League trip to Sevilla.
Swansea, meanwhile, can enjoy a two-week break before their survival bid continues away to Chelsea.
Swansea: Fabianski (7), Naughton (7), Fernandez (8), Mawson (8), Olsson (8), Cork (7), Carroll (7), Fer (8), Dyer (6), Sigurdsson (8), Llorente (7)
Subs used: Routledge (7), Ayew (6), Narsingh (6)
Leicester: Schmeichel (4), Simpson (5), Morgan (4), Huth (4), Fuchs (4), Mahrez (5), Drinkwater (4), Ndidi (5), Albrighton (4), Gray (5), Vardy (5)
Subs used: Slimani (5), Chilwell (5), Amartey (5)
Man of the match: Alfie Mawson