Eden Hazard gave Chelsea the lead from the penalty spot in the 39th minute after Philipp Wollscheid’s late challenge on Cesc Fabregas, but they were pegged back by one of the goals of the season.
Adam produced arguably one of the best goals in Premier League history from inside his own half to catch Thibaut Courtois off his line and give Stoke a lifeline just before the break.
But Chelsea, who lost second-half substitute Diego Costa to another hamstring injury, responded as Hazard pounced on Asmir Begovic’s error to give Loic Remy a tap in.
The win means Chelsea are just 16 points away from Premier League glory and it moves them seven points clear of nearest rivals Arsenal, eight ahead of Manchester United and nine better than Manchester City, who play Crystal Palace in the Monday Night Football.
With the chasing pack closing the gap at the top of the table earlier in the day, Chelsea looked to make a fast start and nearly had the lead inside three minutes as Remy’s deflected shot looked to be nestling into the far corner only for Begovic to scramble across and claw the ball to safety.
The Blues were dominating possession and it looked only a matter of time before they broke the deadlock as Remy raced into the penalty area, but his low shot was once again well saved by Begovic.
The home side seemed to be in the mood and continued to press forward, but they were given a warning midway through the first half as Nemanja Matic’s poor clearance fell to Steven N’Zonzi, but his curling shot sailed over the crossbar.
However, normal service was resumed minutes later as the influential Hazard skipped away from three Stoke defenders on the edge of the penalty area before firing a low shot straight at the ‘keeper.
Chelsea finally made the breakthrough in the 39th minute after Wollscheid caught Fabregas late in the penalty area. The referee pointed to the spot and up stepped Hazard to score his 12th league goal of the season.
Jose Mourinho’s side, who are the only team in the four divisions of English football who have not lost a home match in the league this season, would have thought they were well on the way to all three points but the home fans were stunned minutes before the break when Adam produced a moment of brilliance from long range.
The 29-year-old picked up the ball inside his own half, looked up and powered an effort towards goal which had Courtois scrambling backwards. The Belgian got a hand to the ball but could not keep it out of the net as Adam wheeled away to celebrate his 50th goal in English football.
Stamford Bridge was silenced and Mourinho gambled by sending for Costa at half-time as Chelsea came out with renewed vigour.
Hazard, who was at the heart of everything for the Blues, cut inside on his left foot and fired a powerful shot towards the top corner which Begovic parried around the post.
The Bosnia and Herzegovina international was called into action again minutes later when Glenn Whelan got a touch on Willian’s free-kick, but the sprawling Begovic somehow manage to keep it out.
Mourinho’s side’s task became even harder when Costa, who was an injury doubt coming into the match, pulled up clutching his hamstring and was replaced by Didier Drogba.
It was a huge blow to Chelsea but they showed the character of potential champions to get their noses in front as Hazard pounced on a poor throw from Begovic to run in on goal, before squaring the ball to Remy to tap into an empty net.
Stoke were not done yet though as N’Zonzi went within an inch of levelling things up again, but his shot from 20 yards hit the outside of the post.
Chelsea could have made all three points safe with just 10 minutes remaining when Hazard found substitute Juan Cuadrado five yards out from goal, but he could not beat Begovic, who produced a brilliant double stop.
There was to be one final chance for Mark Hughes’ men in added time as a long throw into the box caused confusion in the home defence but Marko Arnautovic fired wildly over the bar to secure Chelsea a vital win the race for the title.
Chelsea: Courtois (6), Ivanovic (6), Cahill (7), Terry (7), Azpilicueta (7), Matic (6), Fabregas (7), Willian (7), Oscar (5), Hazard (8), Remy (7).
Subs used: Cuadrado (5), Drogba (5), Diego Costa (4).
Stoke City: Begovic (7), Cameron (6), Shawcross (6), Wollscheid (5), Wilson (6), Ireland (5), Whelan (6), Nzonzi (7), Adam (7), Walters (6), Diouf (5).
Subs used: Pieters (5), Arnautovic (5), Crouch (5).
Man of the Match: Eden Hazard