Both sides had half-chances in an entertaining first period, but neither could make the breakthrough.
It was a similar story in the second 45 minutes, but Charles popped up three minutes from time to win it for Celta.
Read how it all unfolded in Sports Mole's minute-by-minute live commentary of the action below.
LEVANTE: Marino; Morales, Navarro, Ramis, Tono; Simao, Diop; Xumetra, Barral, Garcia; Uche
CELTA: Alvarez; Mallo, Cabral, Fontas, Jonny; Orellana, Krohn-Dehli, Fernandez; Nolito, Larrivey, Mina