The visitors came within seven minutes of an upset and a place in the fourth round, but Yann Kermorgant's strike set up a replay at the Kassam Stadium next Tuesday.
A draw was the least United deserved from an assured display.
They went in at half-time 2-0 up thanks to goals from Johnny Mullins and Scott Davies.
Charlton were second best before Michael Morrison's header early in the second half put them back into the game.
And the Championship club went on to push the U's back, claiming an equaliser in the closing stages.
United boss Chris Wilder shuffled his pack, making four changes to the side which started Saturday's goalless draw with Portsmouth.
Tyrone Marsh and James Constable came in up front, while Davies and Josh Ruffels began in midfield.
Both sides took the opening few minutes to acclimatise themselves with the conditions on an extremely heavy pitch.
Johnnie Jackson headed an early chance just wide from Laurie Wilson's cross, before United took charge.
The visitors adjusted quicker to the conditions, taking no risks in their own half and looking to give the front two balls to chase.
From one of those, Constable's hard work forced a corner on 13 minutes.
The initial delivery was cleared back to Davies, whose cross fell kindly to Mullins. He did not strike his shot cleanly, but the ball ricocheted off Michael Morrison and past wrong-footed goalkeeper Ben Hamer.
Mullins wheeled away to celebrate his first goal since September - and the centre back's evening got even better 11 minutes later.
Playing in midfield for the second successive game, he robbed a dawdling Jordan Cousins just inside the Charlton half and found Constable.
The striker wasted no time in sliding a pass to Davies on the overlap and after taking a touch to steady himself, he buried a shot past Hamer.
United were oozing confidence and almost added a third just after the half hour mark when Sean Rigg's curler narrowly missed the target.
Charlton began to assert themselves in the final ten minutes of the half.
Simon Church, who scored twice in the Addicks' 4-0 Capital One Cup win against the U's in August, had an opening when he neatly collected a cross, but Jake Wright slammed the door shut with a well-timed tackle.
The United skipper got a let-off a minute later when he appeared to handle in the box, before looking up to see referee Stephen Martin waving away Charlton's protests for a penalty.
The hosts were booed off at the break and began the second half looking like a team in a hurry.
Within eight minutes the Championship side were back in the game, when Morrison got free at a corner to bury a header past Ryan Clarke.
United immediately replaced Marsh with Smalley and the substitute was involved in a move on the hour which ended when Hamer tipped Constable's header round the post.
Although Charlton looked more dangerous than in the first half, they did not have it their own way.
United looked a threat on the counter-attack, particularly through the lively Rigg.
But they could not fashion a good chance and as the half wore on, the home side built up a head of steam.
With seven minutes remaining the pressure told, as substitute Danny Green got the better of Tom Newey and crossed for Kermorgant to volley home an equaliser.
The home side almost nicked a winner in stoppage time, but David Hunt was in the right place to block Callum Harriott's goal-bound header.
- Post-match reaction from goalscorer Scott Davies and manager Chris Wilder, courtesy of Oxford United's official Youtube channel
Oxford Utd (4-4-2): Clarke, Hunt, Raynes, Wright, Newey, Davies, Mullins, Ruffels, Rigg, Constable, Marsh (Smalley 54).
Subs used: Smalley (Marsh 54), Kitson (Constable 78), Williams (Davies 87).
Unused subs: Rose, Long, Bevans, O'Dowda.
Charlton Ath (4-4-2): Hamer, Wilson, Wood, Morrison, Wiggins, Cook (Harriott 77), Cousins, Jackson, Pritchard (Green 67), Church (Pigott 78), Kermorgant.
Unused subs: Pope, Hughes, Evina, Dervite.
Referee: Stephen Martin (Staffordshire).
Attendance: 5,566 (870 visitors).