Sehrou Guirassy looked as though he had secured a point for his side with an equaliser minutes earlier, but Giroud profited from some poor Rennes defending to clinch the win. Young winger Callum Hudson-Odoi had put the visitor in front in the first half.
Chelsea tops Group E with 10 points from four games, level with Sevilla but ahead on goal-difference, after the Spanish side also registered a late 2-1 victory against host Krasnodar to seal its passage into the knockout stages.
Meanwhile, Manchester United eased to a comfortable 4-1 success over Istanbul Basaksehir at Old Trafford, thanks to a double from Bruno Fernandes. Marcus Rashford, from the spot, and Daniel James also got on the scoresheet for Group H topper United, which has nine points. Paris Saint Germain, which defeated RB Leipzig 1-0, is level on six points with the German club.
Elsewhere, Juventus progressed to the Round-of-16 as a Cristiano Ronaldo goal and a late header from substitute Alvaro Morata gave it a 2-1 home win over Ferencvaros. The result left Juventus second in Group G on nine points from four matches, three behind leader Barcelona, which also booked a knockout-stage berth with a 4-0 win at Dynamo Kyiv.
Group E: Rennes 1 lost to Chelsea 2; Krasnodar 1 lost to Sevilla 2.
Group F: Borussia Dortmund 3 beat Club Brugge 0; Lazio 3 beat Zenit St Petersburg 1.
Group G: Dynamo Kiev 0 lost to Barcelona 4; Juventus 2 beat Ferencvaros 1.
Group H: Manchester United 4 beat Istanbul Basaksehir 1; Paris Saint Germain 1 beat RB Leipzig 0.