The Swans made it three wins from four top-flight matches with a deserved victory at the Liberty Stadium that sees them surge above Leicester to 15th, with the champions remaining just one point above the bottom three.
Both goals came in the last 10 minutes of the first half, defender Mawson scoring a stunning volley – his third strike in six league matches – before Olsson got his first Swansea goal with a shot Kasper Schmeichel should have saved.
Ranieri's men are now without a win in 13 away games this season, have lost five top-flight games in a row and failed to score in any of their six league matches in 2017 – a run which now extends beyond 10 hours.
10 - Leicester City have now gone 10 hours without scoring a Premier League goal. Decline.— OptaJoe (@OptaJoe) February 12, 2017
The Leicester boss was given a vote of confidence from the club's hierarchy this week, but the pressure is growing as the prospect of relegation looks increasingly possible.
Swansea started brightly with Gylfi Sigurdsson's shot striking the arm of Leicester captain Wes Morgan from close range, with the subsequent penalty claims turned down by referee Jon Moss.
Nathan Dyer had come in as Swansea's only change but the winger had to come off early on for the man he had replaced - Wayne Routledge - due to injury.
The first shot on target did not arrive until after the half-hour mark, Routledge's effort kept out by Schmeichel shortly before Sigurdsson fired narrowly wide from 20 yards.
The breakthrough arrived for the hosts in the 36th minute after Sigurdsson's deep free-kick was only half-cleared by Robert Huth, allowing Federico Fernandez's headed pass to set up centre-back partner Mawson to connect with a sweet volley past Schmeichel from eight yards.
And Swansea doubled their lead in first-half stoppage-time when a neat passing move involving Fernando Llorente and Sigurdsson set Olsson free and the full-back fired a shot beyond Schmeichel at his near post.
3 - No defender has scored more Premier League goals in 2017 than Alfie Mawson (3, level with Marcos Alonso). Opener.— OptaJoe (@OptaJoe) February 12, 2017
After Leicester failed to register a shot on target in the opening period, Ranieri brought on Islam Slimani and Ben Chilwell for Marc Albrighton and Christian Fuchs at the break.
But Swansea were back in the ascendancy early in the second half, Llorente heading wide and Sigurdsson's curling strike saved by Schmeichel.
Leicester finally threatened when Riyad Mahrez's througball sent Slimani clear, but Lukasz Fabianski raced out to make a crucial stop with his legs.
The same duo combined again a few moments later, with Slimani missing the target with a close-range header.
Jamie Vardy then lashed a poor strike over and that was all Leicester could offer as Swansea ended a run of four straight defeats in matches against the crisis-hit Foxes.