Oliver Giroud scored Chelsea’s winner as two goals in as many second-half minutes gave them a vital victory in the battle for a top-four finish.
Christian Pulisic equalised and Giroud’s deflected shot secured the points for Frank Lampard’s side in their first match since the resumption of the Premier League season.
Chelsea, with the fit-again Ruben Loftus-Cheek playing his first game for 13 months, dominated much of the first half but went behind a couple of minutes before the interval.
Douglas Luiz crossed from the right and after Anwar El Ghazi’s effort was saved by Kepa Arrizabalaga, defender Kortney Hause bundled the ball in.
Pulisic levelled on the hour mark, shortly after coming on as a substitute.
The American netted at the far post after being set up by Cesar Azpilicueta’s right-wing cross.
And after a slick Chelsea move, Giroud’s right-footed shot went in via a heavy deflection off Villa’s Conor Hourihane.
Chelsea: Kepa, Azpilicueta, Christensen, Rudiger, Alonso, Kante, Loftus-Cheek (Pulisic 55), Kovacic (Barkley 55), Willian (James 90), Giroud (Abraham 80), Mount.
Subs not used: Caballero, Zouma, Emerson, Gilmour, Pedro.