The Spanish side went in front through Carlos Soler, but that was immediately cancelled out by Mateo Kovacic with his first goal for the club.
Christian Pulisic put the Blues in front from close range after the restart, before Kepa denied Dani Parejo from the penalty spot to keep Chelsea in control.
Daniel Wass pulled Valencia level with eight minutes to go with what was surely a cross as it sailed over Kepa and found the back of the net off the inside of the post.
Frank Lampard’s side will qualify to the knockout stages of the competition with a win over Lille at home in their final game in Group H.
Lampard made two changes ahead of kick-off with Andreas Christensen replacing Fikayo Tomori and Reece James coming in for Emerson.
Chelsea had the majority of possession in the opening exchanges but it was the home side who should have gone in front.
After a slick move, Rodrigo laid the ball on a plate for Maxi Gomez in the centre, but the former West Ham striker somehow missed the ball completely from six-yards out with the goal at his mercy.
Just after half an hour played Gomez should have made it 2-0, instead it remained goalless. This time the 23-year-old managed to blaze it wide of the target from the same distance and again unmarked.
Chelsea’s first real chance fell to N'Golo Kante, but he blasted over from 14 yards out following James' deflected cross. He had plenty of time to pick his spot but lacked composure.
Jasper Cillessen denied the away side a few minutes later with a fantastic save. Tammy Abraham latched on to James’ pass, but the striker’s first-time shot was tipped over despite heading into the top corner.
After some poor defending the hosts took the lead in the 40th minute. Rodrigo was given too much space on the right wing, cut back onto his left foot and found Carlos Soler with the cross, who turned it in past Kepa.
Chelsea hit back immediately with Mateo Kovacic netting his first goal for the club a minute after going behind.
Cesar Azpilicueta's cross was headed away but only as far as Kovacic, who swivelled and thumped a 20-yard beauty into the bottom corner to make it 1-1.
Tammy Abraham was forced off through injury at half time with Michy Batshuayi on as a replacement, and five minutes after the restart and Chelsea were in front.
Kurt Zouma headed on Kante’s cross for Christian Pulisic to nudge home from four yards out. The goal was disallowed but after a lengthy VAR check it was turned over and the goal awarded.
Valencia should have levelled immediately this time, but failed to do so.
Kepa came out of his box to deal with a long ball forward, but Christensen didn't wait for his keeper and tried to clear it himself. It went straight to Rodrigo and the Spaniard’s lob landed on the roof of the net.
Valencia won themselves a penalty in the 63rd minute after Jose Gaya was tripped after running in behind Christensen. He went down very easily but the referee pointed to the spot.
Dani Parejo stepped up to take the resultant spot kick, but was denied by a brilliant save by Kepa who guessed the right way and got a strong hand on it.
In the 82nd minute Daniel Wass pulled Valencia level with what was surely a cross, but he’ll claim it either way.
Parejo played the ball out to Wass on the right wing and first time he sent the ball over the head of Kepa and in via the inside of the post.
Chelsea almost won it in the final minute of the match as Michy Batshuayi cut in on the right hand side and hit a left-footed effort from the edge of the box which took a huge deflection. Cillessen was moving the wrong way but recovered in time to keep it out.
Valencia came inches to booking their place in the last 16 after Rodrigo ran down the wing, sent Zouma one way and then the other and curled his shot just wide of the far post.
A 2-2 draw means Chelsea need a win at home against Lille in their final game of Group H to qualify for the knockout stages of the Champions League.
Featured from our writers: