Substitute Higuain slotted home on 80 minutes after fellow Argentine Paulo Dybala had opened the scoring in the fourth minute at the San Siro.
Another Argentine forward Lautaro Martinez pulled Inter Milan level from the spot on 18 minutes, but coach Antonio Conte lost in his first meeting against his former club since leaving Juve to take over the Italy national team in 2014.
Juventus moved one point ahead of Inter after seven games as they target a ninth consecutive title.
“We played a great game against the most solid team in the league, who had won six out of six,” said Higuain.
“We played with a lot of character and determination. And now we’re first.
“This is a great start to the season, but it’s still early and we want to fight on all fronts.”
Juventus coach Maurizio Sarri started with Dybala and Federico Bernardeschi up front alongside Cristiano Ronaldo.
Higuain — who also scored in Juventus’s 3-0 Champions League win over Bayer Leverkusen during the week — began on the bench.
The champions got off to a blistering start with Miralem Pjanic setting up Dybala who took Inter goalkeeper Samir Handanovic by surprise.
Ronaldo rattled the crossbar and then had a goal ruled out when Dybala was in an offside position.
But Inter got back on level terms when Juventus defender Matthijs de Ligt handled the ball, with Lautaro drilling past Wojciech Szczesny.
The hosts were hit with Stefano Sensi going off injured with Sarri bringing on in-form Higuain in place of Bernardeschi after an hour.
Ronaldo and Rodrigo Bentancur helped send Higuain through for the winner, with Szczesny doing well to deny Matias Vecino as Inter desperately pushed forward for an equaliser.
Gian Piero Gasperini’s Atalanta celebrated moving back to the newly-named Gewiss Stadium with a 3-1 win over promoted Lecce that keeps the Bergamo side third on 16 points.
But Serie A runners-up Napoli are now six points behind Juventus in fourth following a goalless draw at Torino.
Roma are fifth, a point behind Napoli, with their match against Cagliari at the Stadio Olimpico finishing 1-1 after Nikola Kalinic’s last-gasp goal for the hosts was disallowed.
“Sick and tired of this crap costing us games. Too many times already this year,” said Roma owner Jim Pallotta on Twitter.
Joao Pedro’s early penalty after a Gianluca Mancini handball was cancelled out by Luca Ceppitelli’s own goal before half-time.
But what looked like a winner from Kalinic was disallowed without a VAR review for a foul on Fabio Pisacane which saw the Cagliari defender stretchered off.
Roma were furious with coach Paulo Fonseca and his deputy both banished from the sideline before the final whistle.
Roma stay a point ahead of city rivals Lazio, who drew 2-2 at Bologna with Ciro Immobile scoring both goals for the visitors.
Lazio’s Joaquin Correa missed a chance for the winner when he sent a penalty kick over the bar two minutes from time.
Bologna coach Sinisa Mihajlovic — a former Lazio player — was back on the bench after undergoing a second round of chemotherapy to treat his leukaemia.
The hosts took the lead after 21 minutes when Ladislav Krejci nodded in a Riccardo Orsolini cross.
Immobile got Lazio back level two minutes later.
Rodrigo Palacio scored Bologna’s second on the rebound in the 31st minute before Serie A top scorer Immobile slotted in the equaliser eight minutes later, to bring his tally to seven league goals in as many games.
Both teams finished with 10 men after Lazio’s Lucas Leiva was sent off on the hour mark with Bologna’s Gary Medel following nine minutes later.
In Tuscany, Nikola Milenkovic nodded in the only goal after 72 minutes to give Fiorentina their third consecutive win as Udinese fell to their fourth defeat in seven games.
Fiorentina are eighth with Udinese a point above the relegation zone.