Roxanne Barker fumbled the ball twice before Nilla Fischer eventually poked home with just 18 minutes left to spoil a brave defensive display from Vera Pauw’s women against a side ranked sixth in the world.
Sweden almost went in front in the fifth minute as captain Lotte Schelin caused panic in the Banyana penalty area and the ball broke for Sofia Jackobsson who clattered a shot off the crossbar.
In the 13th minute, Jackobsson set up Schelin, who shot wide, though the referee gave a corner.
Generally, however, Banyana defended well, with Stephanie Malherbe superb in front of the back four and Lebogang Ramalepe producing some brilliant tackling at right back. Barker, meanwhile, mainly commanded her penalty area well, catching most of the crosses that came her way, though one first half fumble proved a sign of things to come.
Banyana were generally playing on the counter attack, with Shiwe Nogwanya leading the line and Jermaine Seoposenwe lending support with some quality touches.
Nogwanya, however, had to go off with an injury in the 38th minute, and was replaced by Linda Mothlalo. Despite some decent moves, Banyana didn’t threaten Sweden’s goal in the first half, with the Scandinavian’s playing a tight offside trap.
Jackobsson came close to finding the net again in the closing moments of the half, her long-range shot dipping just over the bar.
Sweden came out on the front foot again at the start of the second half, and Fridolina Rolfo got a shot away, but Barker gathered easily.
Rolfo did better in the 52nd minute, cutting inside and lashing a shot just off target.
Sweden were upping the ante in Rio and Schelin lifted Jackobsson’s cross over the bar a minute later.
Banyana had a sniff of a chance in the 70th minute as Seoposenwe broke the offside trap, but Sweden cleared for a corner. Sweden goalkeeper Hedvig Lindahl them finally had to make a save, just about stopping a cross-shot at her near post.
Sweden finally took the lead in the 73rd minute, as Barker fumbled a corner, and the ball dropped to Caroline Seger. She chipped it into the danger area, and Barker again couldn’t hold onto the ball, appearing to drop it over the line. Either way, Nilla Fischer bundled the ball into the net.
Banyana will now play China on Sunday in their next group match.