Match ends, France 2, Albania 0.
France 2-0 Albania
Late goals from Antoine Griezmann and Dimitri Payet saw hosts France edge past Albania to become the first side to reach the Euro 2016 knockout stage.
Albania struck the post shortly after half-time when Ledian Memushaj bundled a cross past France keeper Hugo Lloris.
France striker Olivier Giroud also hit the upright before substitute Griezmann ended Albania's resistance by nodding in Adil Rami's right-wing cross.
Payet stroked in with the final kick to give the scoreline a flattering look.
Les Bleus scored with the game's only two shots on target, struggling to break down a stubborn Albania side as Giroud missed three free headers at Marseille's Stade Velodrome.
Defeat was harsh on the European Championship debutants, who looked to have done enough to earn their first point.
France needed a late goal from Payet to beat Romania in Friday's opening game, and another dramatic win means they are assured of a last-16 place before their final Group A match against Switzerland.
Albania, who lost their opening game against the Swiss, must beat Romania on Sunday to stand any chance of qualifying.
France shake off Albanian blues
Almost a year ago, Didier Deschamps experienced one of his lowest points as France manager as his side lost to Albania in a friendly.
It was their third defeat in four international matches, a performance the French media described as "lacklustre", "listless" and "worrying".
For almost 90 minutes here, it looked as though another performance against Giovanni de Biasi's side would lead to an inquest on the back pages.
Les Bleus were expected to breeze past a side ranked 42nd in the world, a place above Scotland, but lacked invention and creativity until Griezmann's intervention.
The Atletico Madrid forward's glancing header brought relief to the majority of the 64,000 crowd, sparking celebrations similar to those that followed Payet's winner against Romania.
Dropped Griezmann proves his worth
Deschamps made a brave decision to drop Griezmann and Juventus midfielder Paul Pogba - two of his potential match-winners - following uninspiring performances against Romania.
Manchester United's Anthony Martial and Bayern Munich's Kingsley Coman replaced them - as they did in the Stade de France on Friday - but the two youngsters were unable to make much of an impact.
Pogba came on for Martial at half-time, while Coman - who had teed up two decent chances for Giroud - was replaced by Griezmann after 68 minutes.
Pogba's arrival provided more spark, with the rangy midfielder sliding Payet's cross over the bar.
Griezmann scored 32 goals for Champions League finalists Atletico last season, but rarely threatened until popping up in space at the right time to break the deadlock.
Deschamps wanted the pair to give him another tough decision to make before the knockout stage - and France's 1998 World Cup-winning captain has been given his wish.
Another selection dilemma might involve Giroud who, despite scoring eight goals in his previous six international starts, still has to convince some critics of his worth.
Deschamps has continually offered public support to the 29-year-old Arsenal striker, but showed his frustration on the touchline after Giroud failed to convert pinpoint a fourth-minute cross from Payet and two more from Coman after the break.
Albania can take heart from stoic display
Despite their surprise win against Les Bleus last year, Albania were not expected to provide much of a challenge to the tournament favourites on a much bigger stage.
But the Balkan country showed few nerves amid a partisan atmosphere.
They quietened the home crowd with a dogged display, limiting France to only a few openings until the dramatic finish.
Attacks of their own may have been sporadic - particularly as the game wore on - but they did offer a few warning signs for France.
Pescara midfielder Memushaj nipped in front of the home defence to meet a teasing right-wing cross, only to see the ball come back off the upright before France scrambled clear.
Stats of the day
- Kingsley Coman (20 years and two days) is the youngest starter for France in a major finals, beating Bruno Bellone's record from World Cup 1982 (20 years and 118 days).
- This was the first European Championship finals game without a first-half shot on target since France v Romania at Euro 2008.
- This game eclipsed Romania v Portugal in 2000 (71 minutes) to become the Euro finals fixture since 1980 with the longest wait for a shot on target (Griezmann's goal on 90 mins).
- Griezmann's goal was the first by a French substitute at the European Championship since the 2000 final v Italy (Sylvain Wiltord and David Trezeguet).
- Three of France's four goals in the competition so far have come in the 89th minute or later.
- Payet has already had a hand in three goals in the competition (two goals, one assist), the most for a French player in a Euro finals since Zinedine Zidane in 2004 (also three).
- Albania have conceded both the earliest (Switzerland's Schar after five minutes) and the latest goal (France's Payet on 96 minutes) at Euro 2016 so far.
France travel back to the north of the country for their final Group A game, taking on neighbours Switzerland in Lille on Sunday.
Albania face Romania, who have one point from their opening two games, in Lyon.
- 5KantéBooked at 88mins
- 20ComanSubstituted forGriezmannat 68'minutes
- 11MartialSubstituted forPogbaat 45'minutes
- 9GiroudSubstituted forGignacat 77'minutes
- 18AjetiSubstituted forVeseliat 85'minutes
- 13KukeliBooked at 55minsSubstituted forXhakaat 74'minutes
- 2LilaSubstituted forRoshiat 71'minutes
- 22AbrashiBooked at 81mins
- William Collum
- Shots on Target
Second Half ends, France 2, Albania 0.
Goal! France 2, Albania 0. Dimitri Payet (France) right footed shot from the left side of the box to the bottom right corner. Assisted by André-Pierre Gignac following a fast break.
Delay over. They are ready to continue.
Delay in match Mergim Mavraj (Albania) because of an injury.
Hand ball by N'Golo Kanté (France).
Goal! France 1, Albania 0. Antoine Griezmann (France) header from the centre of the box to the bottom left corner. Assisted by Adil Rami with a cross following a corner.
Corner, France. Conceded by Frederic Veseli.
Attempt blocked. Ledian Memushaj (Albania) left footed shot from the left side of the box is blocked. Assisted by Odise Roshi with a cross.
N'Golo Kanté (France) is shown the yellow card for a bad foul.
Foul by N'Golo Kanté (France).
Ermir Lenjani (Albania) wins a free kick on the left wing.
Attempt blocked. N'Golo Kanté (France) right footed shot from outside the box is blocked. Assisted by Dimitri Payet.
Substitution, Albania. Frederic Veseli replaces Arlind Ajeti because of an injury.
Corner, France. Conceded by Arlind Ajeti.
Attempt blocked. N'Golo Kanté (France) right footed shot from outside the box is blocked.
Attempt blocked. Blaise Matuidi (France) left footed shot from outside the box is blocked. Assisted by Dimitri Payet.
Attempt missed. Antoine Griezmann (France) header from the centre of the box misses to the left. Assisted by Bacary Sagna with a cross.
Amir Abrashi (Albania) is shown the yellow card for a bad foul.
Blaise Matuidi (France) wins a free kick in the attacking half.
Foul by Amir Abrashi (Albania).
Foul by Paul Pogba (France).
Amir Abrashi (Albania) wins a free kick in the attacking half.
Attempt missed. Bacary Sagna (France) right footed shot from the centre of the box is high and wide to the right.
Offside, France. Antoine Griezmann tries a through ball, but André-Pierre Gignac is caught offside.
Substitution, France. André-Pierre Gignac replaces Olivier Giroud.
Foul by Patrice Evra (France).
Odise Roshi (Albania) wins a free kick on the right wing.
Substitution, Albania. Taulant Xhaka replaces Burim Kukeli because of an injury.
Delay over. They are ready to continue.
Delay in match Burim Kukeli (Albania) because of an injury.
Hand ball by Paul Pogba (France).
Substitution, Albania. Odise Roshi replaces Andi Lila.
Attempt blocked. N'Golo Kanté (France) right footed shot from outside the box is blocked. Assisted by Paul Pogba.
Foul by Patrice Evra (France).
Andi Lila (Albania) wins a free kick in the defensive half.
Olivier Giroud (France) hits the left post with a header from the centre of the box. Assisted by Patrice Evra with a cross.
Substitution, France. Antoine Griezmann replaces Kingsley Coman.
Attempt missed. Olivier Giroud (France) header from the centre of the box misses to the right. Assisted by Kingsley Coman with a cross.
Corner, France. Conceded by Mergim Mavraj.