Cardiff hit the woodwork twice as Joe Ralls smashed the post with a long-range first-half strike and Anthony Pilkington hit the bar with a volley.
Johnnie Jackson wasted a good opening as the Charlton captain headed over Johann Berg Gudmundsson's cross.
And Charlton's Simon Makienok missed two late chances as Cardiff hung on.
The Bluebirds were reduced to 10 men for the final minute of injury time after midfielder Sammy Ameobi was dismissed for a second yellow card.
The point moves Charlton off the bottom table but they are now six points from safety after MK Dons and Bristol City both won.
It was a battle of the sides with controversial owners and in a week where Vincent Tan vowed to halve Cardiff's £140m debt, Charlton fans handed out 2,000 Pinocchio masks and stickers before kick-off in the latest protest at Addicks owner Roland Duchatelet.
And their mood would not have been helped if Anthony Pilkington's header had not been deflected over with barely a minute on the clock.
Ameobi and a Peter Whittingham free-kick went close for Cardiff before midfielder Ralls' 25-yard shot cannoned back off the post.
Charlton's Reza Ghoochannejhad tested Cardiff goalkeeper David Marshall before an unmarked Jackson headed Gudmundsson's corner into the ground and over.
Pilkington twice worried the Charton defence either side of the interval before the Cardiff striker hit the crossbar when his clever flick from Scott Malone's cross had home keeper Stephen Henderson beaten.
But Charlton, with the second worst defensive record in the league, held firm and the hosts could have won their first home game since early November in added time.
Zakarya Bergdich forced Marshall into a smart save before Cardiff defender Bruno Ecuele Manga cleared Makienok's effort off the line as the Welsh side drew their 13th match this season, the joint highest in the whole league.
Charlton head coach Jose Riga:
Media playback is not supported on this device
"Cardiff deserved to win the game, but for me the most important was to see a reaction from my players. The way we played pleased me a lot.
"Now we must make sure we keep this up in the next game. With these efforts we will get what we deserve.
I'm realistic. Results have not been the best, but what can we do?
"If you think and act like a team you can do a lot things. I believe in work, commitment and I always stay optimistic. It's a step forward."
Cardiff City manager Russell Slade said:
"We opened up in an effort to try and win three points rather than take just one. We had something like 22 shots and if there's any criticism we've probably only had three or four on target and that is what cost us dearly.
"We felt it was two points dropped massively. We were in some good situations and it was the final shot or pass that let us down. We didn't have the final ruthless streak which was going to bring us home the three points.
"The Ameobi red card was a little bit soft and it's a disappointing."
Match ends, Charlton Athletic 0, Cardiff City 0.
Second Half ends, Charlton Athletic 0, Cardiff City 0.
Second yellow card to Sammy Ameobi (Cardiff City).
Foul by Anthony Pilkington (Cardiff City).
Harry Lennon (Charlton Athletic) wins a free kick in the defensive half.
Foul by Federico Macheda (Cardiff City).
Diego Poyet (Charlton Athletic) wins a free kick in the defensive half.
Sammy Ameobi (Cardiff City) wins a free kick in the defensive half.
Foul by El-Hadji Ba (Charlton Athletic).
Attempt blocked. Simon Makienok (Charlton Athletic) right footed shot from the centre of the box is blocked. Assisted by Yaya Sanogo.
Attempt blocked. Tom Lawrence (Cardiff City) right footed shot from outside the box is blocked. Assisted by Joe Ralls.
Corner,  Cardiff City. Conceded by Morgan Fox.
Attempt blocked. Simon Makienok (Charlton Athletic) right footed shot from the centre of the box is blocked.
Attempt blocked. Simon Makienok (Charlton Athletic) right footed shot from the centre of the box is blocked.
Corner,  Cardiff City. Conceded by Harry Lennon.
Attempt blocked. Anthony Pilkington (Cardiff City) right footed shot from the right side of the box is blocked. Assisted by Sammy Ameobi.
Simon Makienok (Charlton Athletic) is shown the yellow card.
Lee Peltier (Cardiff City) wins a free kick in the defensive half.
Foul by Simon Makienok (Charlton Athletic).
Attempt blocked. Johann Berg Gudmundsson (Charlton Athletic) left footed shot from outside the box is blocked. Assisted by Simon Makienok.
Corner,  Cardiff City. Conceded by Stephen Henderson.
Attempt saved. Tom Lawrence (Cardiff City) right footed shot from outside the box is saved in the bottom right corner.
Offside, Charlton Athletic. Jorge Teixeira tries a through ball, but Simon Makienok is caught offside.
Foul by Anthony Pilkington (Cardiff City).
Jorge Teixeira (Charlton Athletic) wins a free kick in the defensive half.
Corner,  Charlton Athletic. Conceded by Bruno Ecuele Manga.
Attempt saved. Zakarya Bergdich (Charlton Athletic) left footed shot from the left side of the box is saved in the centre of the goal. Assisted by Yaya Sanogo with a headed pass.
Foul by Anthony Pilkington (Cardiff City).
Jorge Teixeira (Charlton Athletic) wins a free kick in the defensive half.
Zakarya Bergdich (Charlton Athletic) is shown the yellow card.
Anthony Pilkington (Cardiff City) wins a free kick in the defensive half.
Foul by Harry Lennon (Charlton Athletic).
Substitution, Cardiff City. Aron Gunnarsson replaces Peter Whittingham.
Substitution, Charlton Athletic. Diego Poyet replaces Reza Ghoochannejhad.
Attempt blocked. Anthony Pilkington (Cardiff City) left footed shot from outside the box is blocked. Assisted by Peter Whittingham.
Substitution, Charlton Athletic. Yaya Sanogo replaces Jordan Cousins because of an injury.
Attempt blocked. Jordan Cousins (Charlton Athletic) left footed shot from outside the box is blocked.
Attempt blocked. Chris Solly (Charlton Athletic) left footed shot from outside the box is blocked.
Delay over. They are ready to continue.
Delay in match Jordan Cousins (Charlton Athletic) because of an injury.
Cardiff City missed a chance to close the gap on the Championship play-off places as Charlton Athletic battled off the bottom in a pulsating draw.