Published: 2017-11-11 04:37:49 BdST
Italy's Andrea Belotti sent an early header just wide but after that the visitors showed little ambition, seemingly hoping for a draw to take back to Milan for Monday's second leg as they battle for a place at next year's tournament in Russia.
That all changed when Johansson came off the bench to replaced Albin Ekdal in the 57th minute and four minutes later snapped up a flick-on from a throw-in and hammered the ball through a forest of legs where it was deflected into the net.
Matteo Darmian came closest to an equaliser, sending a shot cannoning off a post, but the visiting forward line failed to ignite and Italy are now in danger of missing the World Cup finals for the first time since 1958 in Sweden.
With retired record goalscorer Zlatan Ibrahimovic watching from the stands, Sweden peppered the Italian defence with long balls but the experienced trio of Andrea Barzagli, Giorgio Chiellini and Leonardo Bonucci dealt comfortably with the bombardment.
In a combative game, midfielder Marco Veratti was booked midway through the first half for a tackle on Marcus Berg and will miss the return leg due to suspension.
Italy manager Gian Piero Ventura cut a frustrated figure on the touchline, sending on Lorenzo Insigne for Veratti in the 76th minute and the Napoli forward immediately provided a much-needed spark of creativity.
But with a crowd of 49,193 roaring them on, the Swedes cleared their lines repeatedly and defended heroically through five minutes of added time to hang on for a superb home victory.