Match ends, Rennes 1, Chelsea 2.
Chelsea sealed their progress to the Champions League knockout stage with two games to spare as Olivier Giroud's late header secured victory at Rennes.
The French striker has played just 127 minutes for the Blues so far this season, but made the most of his time on the pitch here with an injury-time finish after Timo Werner's effort had been blocked.
Just six minutes earlier, Rennes looked to have denied Chelsea when Serhou Guirassy headed home from a corner to cancel out Callum Hudson-Odoi's opener.
Frank Lampard's side dominated the first half and could easily have led by more than just Hudson-Odoi's calm finish after he had been sent clear by a pinpoint pass from Mason Mount.
They invited the home side on in the second half and had to rely on a defence that included the returning Thiago Silva and goalkeeper Edouard Mendy, who made a couple of good saves against his former club.
A late winner for Sevilla means both they and the Blues have 10 points in Group E, nine more than both Rennes and Krasnodar.
- Best action and reaction from Rennes v Chelsea and the rest of Tuesday's Champions League games
- What can be decided in Champions League this week?
- Football Daily podcast: Giroud sends Chelsea through and Fernandes fires Man Utd top
Lampard spoke before Tuesday's match of Chelsea's need to get their Champions League business done early, and will be delighted with the outcome.
Almost as important as sealing qualification is the fact Chelsea can now rest players for the final two group games, which come during a relentless December packed with tough fixtures.
Their remaining games - against Sevilla and Krasnodar - fall between league fixtures against Tottenham, Leeds and Everton as part of eight games in a month.
They will want to take the clash in Spain more seriously, with Julen Lopetegui's side having matched the Blues in a goalless draw at Stamford Bridge and their only rivals for top spot, which in theory brings an easier tie in the last 16.
They will be full of confidence, though, having won six matches on the spin since following up that Sevilla stalemate with another at Manchester United in late October.
Tuesday's victory could have been a bit less stressful for them had they finished the two other clear-cut chances that fell their way during their early dominance.
However, either side of Hudson-Odoi's goal, Werner somehow found a way to scoop a shot from six yards over the bar and Mount saw a poked effort clawed wide by home keeper Alfred Gomis.
Rennes deserved the leveller when it came towards the end of a second-half display that was full of endeavour but so often short of ruthlessness in front of goal. It is clear to see why they had gone over five hours without a goal prior to Guirassy's header.
But Chelsea recovered to take the points thanks to the ever-reliable Giroud, who was sent on by Lampard in the 69th minute and rewarded his boss in the 91st with his 30th goal for the club.
'A tough, hard-fought win'
Chelsea manager Frank Lampard, talking to BT Sport: "I'm very happy to qualify with two games to spare. It was a really tough match, they're a very good team. Their recent form doesn't reflect how good they are, it was a tough, hard-fought win.
On balancing the team with Spurs at the weekend: "We have to prioritise the game in front of us but we're aware of where we are in the league and that Sunday is a big game.
"It always will be because of the rivalry and they are a great team and now it's just about preparing well. They'll have a day off tomorrow and then come Thursday morning we'll start thinking about Spurs properly."
Chelsea make it 16 out of 17
- Rennes have won just one of their last 11 games in European competition (D2 L8).
- Chelsea have made the knockout stages in 16 of their 17 Champions League seasons (only failing in 2012/13).
- Rennes have managed just one clean sheet in their last 14 games in European competition (2-0 v Lazio in December 2019 in the Europa League).
- Chelsea have won three consecutive Champions League matches for the first time since December 2015.
- Chelsea are unbeaten in 13 games in all competitions, their longest run without defeat since November 2018 (18).
- Since his first European appearance for Chelsea in October 2018, Callum Hudson-Odoi has netted six goals in European competition, a haul bettered only by Olivier Giroud for the Blues in that time (12).
- Since the start of last season, Mason Mount has registered eight assists for Chelsea in all competition, a joint-high among players still with the club (also 8 for Azpilicueta and Abraham).
- Olivier Giroud is just the fourth player to score for both Chelsea and Arsenal in the Champions League (also Anelka, Fabregas and Gallas).
- 3Da Silva
- 31TruffertSubstituted forMaouassaat 86'minutes
- 10CamavingaSubstituted forGrenierat 78'minutesBooked at 87mins
- 14BourigeaudBooked at 90mins
- 18DokuSubstituted forGbohoat 86'minutes
- 9GuirassySubstituted forNiangat 86'minutes
- 12Lea SilikiSubstituted forDel Castilloat 63'minutes
- 22Del Castillo
- 6Thiago Silva
- 17KovacicSubstituted forHavertzat 76'minutes
- 19MountSubstituted forKantéat 68'minutes
- 20Hudson-OdoiSubstituted forZiyechat 75'minutes
- 9AbrahamSubstituted forGiroudat 69'minutes
- 11WernerSubstituted forJamesat 90+2'minutes
- Björn Kuipers
- Shots on Target
Second Half ends, Rennes 1, Chelsea 2.
Benjamin Bourigeaud (Rennes) is shown the yellow card for a bad foul.
Foul by Benjamin Bourigeaud (Rennes).
Kurt Zouma (Chelsea) wins a free kick in the defensive half.
Substitution, Chelsea. Reece James replaces Timo Werner.
Goal! Rennes 1, Chelsea 2. Olivier Giroud (Chelsea) header from the centre of the box to the top left corner.
Attempt saved. Timo Werner (Chelsea) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Hakim Ziyech.
Attempt saved. Ben Chilwell (Chelsea) header from the centre of the box is saved in the top left corner. Assisted by Hakim Ziyech.
Clément Grenier (Rennes) is shown the yellow card for a bad foul.
Foul by Clément Grenier (Rennes).
N'Golo Kanté (Chelsea) wins a free kick in the attacking half.
Substitution, Rennes. Yann Gboho replaces Jéremy Doku.
Substitution, Rennes. Faitout Maouassa replaces Adrien Truffert.
Substitution, Rennes. M'Baye Niang replaces Serhou Guirassy.
Goal! Rennes 1, Chelsea 1. Serhou Guirassy (Rennes) header from the centre of the box to the high centre of the goal. Assisted by Benjamin Bourigeaud with a cross following a corner.
Corner, Rennes. Conceded by Thiago Silva.
Substitution, Rennes. Clément Grenier replaces Eduardo Camavinga.
Foul by Benjamin Bourigeaud (Rennes).
Thiago Silva (Chelsea) wins a free kick in the defensive half.
- Barack Obama Exclusive: The former US President previews his upcoming memoir
- Missed Small Axe?: The latest film from Steve McQueen is streaming now