The AEK Athens midfielder came on as a substitute and netted just after the hour, beating Gianluigi Buffon with a deflected effort from the edge of the box.
Janne Andersson's side almost fell behind with six minutes on the clock when Matteo Darmian crossed in from the byline, finding the head of Andrea Belotti, but the Torino striker missed the target from mere yards out.
Sweden's best change to peg Italy back in the first half came in the 25th minute when Ola Toivonen's cutback found Emil Forsberg in front of goal, only for the RB Leipzig man to fire over the crossbar and into the stand.
The hosts took the lead in the 61st minute through Johansson, who smashed a half-volley beyond Buffon with the aid of a wicked deflection just minutes after coming on as a substitute.
Italy were a lick of paint away from drawing level eight minutes later as Darmian's drive from 25 yards came back off the post, with Swedish goalkeeper Robin Olsen left rooted to the spot.
Sweden put on a solid defensive display and Italy never looked like scoring in the closing stages, failing to register a shot on target after Darmian rattled the upright.
The two sides will meet for the second leg in Italy on November 13.