Charles opened the scoring for the visitors when he slotted past goalkeeper Jordi Codina in the 15th minute, but Getafe soon pulled level through Alvaro Vazquez.
The striker latched onto a Pablo Sarabia throughball to beat Sergio Alvarez with a neat finish.
Getafe looked to have missed their chance to claim maximum points when Diego Castro fluffed his lines from the penalty spot following a handball by Nemanja Radoja - chipping onto the crossbar to the dismay of his team-mates.
However, that error proved to be of little consequence as, with five minutes left on the clock, Sarabia made no mistake when a delightful Sammir flick found him unmarked in the penalty area.
The result lifts Getafe to 14th, while Celta - now without a win in 10 league matches themselves - slip to 12th.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.