Roma forward Edin Dzeko had fired Bosnia ahead after 32 minutes at the Juventus Stadium as the hosts conceded their first goal of the European qualifying campaign.
But Insigne hit back four minutes after the break with a stunning volley into the top of the net in front of 29,100 fans.
And the Napoli captain set up Verratti for the winner four minutes from time.
Roberto Mancini's side are top of Group J with a maximum 12 points after four games with 13 goals scored and just one conceded.
"We were perhaps a little tired, but in the second half we gave everything, especially character," said Mancini, who is rebuilding Italy after the Azzurri's failure to qualify for last year's World Cup in Russia.
"We dominated after the break and it was a deserved win. The two goals were beautiful."
Bosnia are fifth in the six-team group, losing 2-0 to Finland last time out when Italy crushed Greece 3-0 in Athens.
Juventus midfielder Miralem Pjanic, suspended against Finland, returned for Bosnia at his club ground.
And the visitors piled on the pressure early with Dzeko on hand to tap in an Edin Visca cross across the goalmouth.
The 33-year-old ended Italy's run of six straight games without conceding a goal going back to last October.
Italy veteran Fabio Quagliarella, the top Serie A scorer this season, was denied an equaliser with Bosnia 'keeper Ibrahim Sehic deflecting with his fingertips.
Federico Chiesa replaced Quagliarella after the interval with Insigne breaking through after 49 minutes from a Federico Bernardeschi corner.
Sehic did well to clear an Insigne header on 69 minutes, with the Bosnia stopper also denying captain Giorgio Chiellini.
Verratti though eventually struck the winner from distance after good work from Insigne, to put Italy on course for Euro 2020, for which the opening match takes place in Rome.
"We mustn't get ahead of ourselves," said Verratti. "We've achieved nothing, we are Italy and can't just consider ourselves phenomenons after winning a couple of games. We've got to do more."
Italy next play Armenia on September 5 with Bosnia hosting Liechtenstein.