Giroud, who has only started seven Premier League games for Arsenal this season, found the back of the net in each half and Antoine Griezmann scored a penalty after Aurelien Joachim had equalised for the hosts.
Didier Deschamps's side, who looked shaky in defence, now have 13 points from five games, three ahead of Sweden who beat Belarus 4-0.
France take on Spain in a friendly at the Stade de France on Tuesday before resuming their World Cup qualifying campaign with a trip to Sweden on June 9.
Luxembourg endured a difficult start as goalkeeper Anthony Moris sustained a knee injury and was substituted by Ralph Schon in the 21st minute.
Griezmann found Djibril Sidibe on the right flank and striker Giroud latched on to the Monaco full back's pass to put Les Bleus ahead after 28 minutes with his 22nd international goal.
Luxembourg, however, reacted swiftly and Joachim converted a penalty in the 34th minute after Blaise Matuidi had brought down Daniel Da Mota.
France were clearly the superior side, however, and Griezmann put the visitors back in front three minutes later with a penalty after Sidibe was fouled by Da Mota.
France went close to a third goal when Matuidi's half-volley from 20 metres crashed against the post.
The third goal came in the 77th minute when Giroud tapped in from a cross by Benjamin Mendy, who was making his international debut after an impressive season with Monaco.
His club team mate Kylian Mbappe, 18, earned his first cap when he replaced Dimitri Payet in the 78th minute. The forward came close to adding a fourth with a fine half-volley that was parried by Schon.