Giroud guided home a brilliant header from Davide Calabria's cross in the 40th minute to guarantee Milan at least fourth place and complete Italy's line-up in Europe's top club competition next season.
It was the one moment of quality in an otherwise drab match in Turin in which little of consequence happened apart from Giroud's 12th league goal of the season.
Stefano Pioli's side, who were knocked out of this year's Champions League in the semi-finals by Inter Milan, join their local rivals, Lazio and champions Napoli on the continent's big stage.
They are six points ahead of fifth-placed Atalanta with one match left in what has been a long season and one in which their title defence collapsed after the World Cup.
"This was the first time we truly tried to be competitive in two tournaments and we were lacking something," said Pioli.
"We can enjoy the win and qualification, but it was a strange season for many reasons."
Juve meanwhile stay seventh and in the Europa Conference League spot after being deducted 10 points for illicit transfer activity by the Italian Football Federation on Monday.
Massimiliano Allegri's side can still reach the Europa League spots as they are one point behind Roma in sixth, although the spectre of more punishment for financial irregularities hangs over the Turin giants.
- Lecce safe -
Lecce ensured Serie A survival after late penalty drama gave them a 1-0 win over Monza, while a crushing late draw with Empoli took Verona's survival battle to the final day.
Lorenzo Colombo rammed home the spot-kick which maintained Lecce's Serie A status in the 11th minute of stoppage time after Christian Gytkjaer was penalised for handball following a VAR check.
Former Denmark forward Gytkjaer had a penalty of his own saved by Wladimiro Falcone with six minutes of regular time remaining.
That allowed Colombo to fire Lecce five points clear of the drop zone and cause coach Marco Baroni to sink to his knees in joy and grief for his recently deceased father.
"I thought about my father because I lost him recently... I felt him by my side in that moment," Baroni told DAZN.
Verona sit in the final relegation spot after a gut-wrenching Giangiacomo Magnani own goal in the sixth minute of injury time which snatched a 1-1 draw for safe Empoli.
They are level on 31 points with 17th-placed Spezia, whom they might have to face in a play-off devised this season to decide who ends up in 18th place between teams who finish on the same points.
- Osimhen not enough -
Victor Osimhen's brace wasn't enough for Napoli as the newly-crowned Italian champions threw away a two-goal lead to draw 2-2 with Bologna.
Nigeria forward Osimhen took his season's tally to 30 in all competitions with finishes in the 14th and 54th minutes.
However Lewis Ferguson pulled one back in the 63rd minute and Lorenzo De Silvestri headed the hosts level in his final home match as a Bologna player.
Napoli won their first league title since 1990 this season but owner Aurelio De Laurentiis said that coach Luciano Spalletti will leave to take a year's sabbatical.
"He's a free man, he's given us something and I thank him, it's right that he does what he wants," said De Laurentiis to state broadcaster Rai.
Sergej Milinkovic-Savic's 89th-minute winner in a 3-2 success over relegated Cremonese reclaimed second spot for Lazio.
Serbia midfielder Milinkovic-Savic had put Lazio two goals ahead at half-time but Pablo Galdames and a Manuel Lazzari own goal had the away side level within four second-half minutes just before the hour mark.
His late winner puts Lazio two points ahead of Inter with the two teams travelling to Empoli and Torino respectively on the final day.