The Clarets started as the better team and Vokes almost put them into an early lead after turning neatly, but dragged his shot wide.
Kieran Trippier posed problems for the Addicks during the first half and provided a pinpoint cross for Vokes, who headed narrowly wide.
Moments later Tripper crossed again, this time to Ings, who flicked the ball past Ben Hamer to get his 10th goal of the season.
However, Burnley bagged a vital second when Vokes latched onto Dean Marney's through-ball and chipped Hamer, while Charlton looked for an offside flag that never came.
He got his second and the Clarets' third goal with four minutes remaining when he met Junior Stanislas's corner with a neat volley.
The result means that Burnley stay within three points of Queens Park Rangers at the top of Championship.