After failing to qualify for this summer's World Cup finals, the late win gives Chile something to build on as they started their new era under Reinaldo Rueda with a slender win in Stockholm.
Toivonen and Vidal both came close to converting headed chances in the opening 12 minutes of the contest, but they would both have better luck soon after.
Bayern Munich man Vidal rocketed home from a half-volley on the edge of the opposition box, picking out the top corner of the net with his drive.
Less than 60 seconds later it was level thanks to Toivonen, who kept his composure to round off a slick team move for the World Cup-bound Swedes.
Incredibly, Chile could have edged back in front a couple of minutes later when Alexis Sanchez tapped home towards the back post, only for the offside flag to correctly go up.
La Roja, the highest-ranked nation to miss out on a spot at Russia 2018, dictated the play for large parts of the first half without actually creating any further clear-cut chances.
That would prove to be the case for Sweden, too, with the sides going into the break level after scoring from their only on-target efforts.
Kristoffer Nordfeldt had a couple of shots-to-nothing to keep out early in the second period, but it was proving to be a frustrating evening for Chile as they attempted to find a way through.
Chile boss Rueda used the second half to bring on a raft of players, including debutant Bolados with 71 minutes on the clock.
Not until the 75th minute did the next serious effort arrive, via the boot of Nicolas Castillo, who side-footed his shot from the edge of the area into the hands of Nordfeldt.
Sanchez was one of those to be kept on the field until the end and he played a key part in the late winner, seeing his close-range shot parried into the path of Bolados to drive home the loose ball from 12 yards.
SWEDEN (4-4-2): Nordfeldt; Lustig (J.Larsson 71'), Lindelof, Granqvist, Olsson (Hiljemark 79'); Claesson, S.Larsson, Svensson, Forsberg (Sema 79'); Berg, Toivonen
CHILE (4-3-3): Herrera; Isla (Diaz 79'), Roco, Maripan, Beasusejour; Vidal, Aranguiz, Hernandez (Valdes 61'); Sanchez, Vargas (Castillo 61'), Sagal (Bolados 71')