Johnnie Jackson grabbed a late winner as Charlton twice came from behind to beat in-form Watford.
Daniel Pudil's early strike put Watford ahead but Charlton hit back through Tommie Hoban's own goal and Yann Kermorgant's header.
Almen Abdi's penalty and Alexandre Geijo's goal put Watford ahead before Kermorgant tucked in another equaliser.
Addicks skipper Jackson then struck with a header at the end of a breathless encounter at Vicarage Road.
Hornets boss Gianfranco Zola, despite an impressive 3-1 win at Brighton on Saturday, dropped goalscorers Troy Deeney and Matej Vydra but it was keeping them out that proved the problem here.
Charlton's miserable December
Chris Powell's Charlton lost three and drew three in their six Championship games in December. They also failed to score in their three away games during that month
The hosts did take an early lead when Geijo's low shot was saved by Charlton goalkeeper Ben Hamer in the 11th minute and Pudil turned in the rebound for his first goal for the club.
Chris Powell's Charlton levelled in the 33rd minute when Jackson swung in a corner, and after a scramble it eventually went in off Watford defender Hoban.
Soon after Charlton were ahead when Bradley Pritchard's cross was powered in by Kermorgant.
Dorian Dervite tripped Fernando Forestieri in the area after the break to hand Watford a penalty and Abdi tucked away the spot kick before Geijo clipped the ball past Hamer to regain the advantage for Zola's side.
But their lead was short-lived as Ricardo Fuller crossed for Kermorgant to tuck away his second of the game and former Watford loanee Jackson headed in Dale Stephens' corner to give Charlton their first win since November.
Watford manager Gianfranco Zola: "We went in front but we were certainly not the normal team that we are.
"The passing wasn't good enough, we were sloppy and it was very costly. We tried to get into the game, in the second half we did better, but sometimes it's too late.
"Maybe we had too many compliments (after beating Brighton) the other day and we went on the pitch with probably not the same awareness they had because they were winning all the second balls, all the headers and they found themselves 2-1 up by doing little."
Charlton manager Chris Powell: "We had a tough December - three draws, three losses - after having a very good November, so it's a real positive result for us and a good way for us to kick off the new year.
"It was a sensational game. Both teams played their part in what was a great game for everyone watching but I felt on the balance overall we just about deserved it.
"But they had some good chances, my keeper made a couple of good blocks, but overall we had 10 chances to their five and it was the good we took four of them."
Sorry, we were unable to load match stats, please try again.
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +6:11
Corner taken short by Jordan Cook.90:00 +5:47
Piccoli Neuton challenges Robert Hulse unfairly and gives away a free kick. Free kick taken by Jordan Cook.90:00 +5:21
Free kick awarded for a foul by Piccoli Neuton on Jordan Cook. Dale Stephens takes the free kick.90:00 +3:41
Manuel Almunia takes the free kick.90:00 +3:41 Booking
Booking The referee shows Jordan Cook a yellow card for unsporting behaviour.90:00 +3:35
The referee blows for offside.90:00 +2:08
The free kick is delivered right-footed by Dale Stephens from right channel.90:00 +2:08 Substitution
Substitution Ricardo Fuller leaves the field to be replaced by Robert Hulse.90:00 +2:08 Booking
Booking The referee shows Joel Ekstrand a yellow card.90:00 +1:27
Effort on goal by Johnnie Jackson from inside the penalty box misses to the right of the target. Joel Ekstrand challenges Ricardo Fuller unfairly and gives away a free kick.90:00 +1:09
Ricardo Fuller sends in a cross, blocked by Piccoli Neuton. Corner taken short by Johnnie Jackson.90:00 +0:39
Johnnie Jackson decides to take a short corner.89:19
Fernando Forestieri takes a shot. Comfortable save by Ben Hamer.89:10
The ball is sent over by Marco Cassetti, clearance made by Matthew Taylor.88:12
A cross is delivered by Marco Cassetti, clearance by Chris Solly.87:29
Fernando Forestieri delivers the ball, Ben Hamer makes a save. Inswinging corner taken by Fernando Forestieri, clearance by Jordan Cook.86:07
Jordan Cook crosses the ball, Joel Ekstrand makes a clearance.85:06 Substitution
Substitution Leon Cort goes off and Matthew Taylor comes on.83:19
Matej Vydra produces a cross.
The ball is crossed by Marco Cassetti, Dorian Dervite gets a block in. Corner taken by Matej Vydra from the right by-line, clearance by Leon Cort.81:34 Substitution
Substitution Troy Deeney comes on in place of Sean Murray.79:47 Substitution
Substitution Lawrie Wilson goes off and Jordan Cook comes on.79:47
The offside flag is raised against Matej Vydra. Ben Hamer restarts play with the free kick.78:22 Substitution
Substitution Matej Vydra joins the action as a substitute, replacing Daniel Pudil.77:33
Assist by Dale Stephens.77:33 Goal scored
Goal! - Johnnie Jackson - Watford 3 - 4 Charlton Johnnie Jackson grabs a headed goal from inside the area. Watford 3-4 Charlton.77:02
Johnnie Jackson sends in a cross, Joel Ekstrand makes a clearance. Dale Stephens takes a outswinging corner from the right by-line played to the near post,76:33
Chris Solly crosses the ball, clearance made by Tommie Hoban.74:48
The assistant referee flags for offside against Fernando Forestieri. Ben Hamer restarts play with the free kick.71:16
Cedric Evina delivers the ball, Lawrie Wilson has a headed effort at goal from deep inside the area missing to the left of the target.70:14
Effort from deep inside the area by Bradley Pritchard misses to the left of the goal.69:12
Ricardo Fuller provided the assist for the goal.69:12 Goal scored
Goal! - Yann Kermorgant - Watford 3 - 3 Charlton Yann Kermorgant scores a goal from close range to the bottom right corner of the goal. Watford 3-3 Charlton.69:06
Ricardo Fuller delivers the ball,67:24
Fernando Forestieri provided the assist for the goal.67:24 Goal scored
Goal! - Alexandre Geijo - Watford 3 - 2 Charlton Alexandre Geijo fires in a goal from inside the six-yard box to the bottom right corner of the goal. Watford 3-2 Charlton.66:36
Daniel Pudil sends in a cross, Fernando Forestieri produces a right-footed shot from deep inside the six-yard box which goes wide of the right-hand upright.65:13
Corner taken by Fernando Forestieri played to the near post, clearance by Johnnie Jackson.64:48
Marco Cassetti sends in a cross, clearance by Dorian Dervite.63:35
Foul by Dale Stephens on Fernando Forestieri, free kick awarded. Mark Yeates crosses the ball in from the free kick, clearance by Leon Cort.63:12
Marco Cassetti sends in a cross, clearance by Leon Cort.62:09
Foul by Bradley Pritchard on Sean Murray, free kick awarded. Tommie Hoban takes the direct free kick.60:47 Substitution
Substitution Mark Yeates on for Almen Abdi.60:04
Ricardo Fuller concedes a free kick for a foul on Almen Abdi. Free kick taken by Piccoli Neuton.59:12
Ben Hamer restarts play with the free kick.59:12 Booking
Booking Caution for Piccoli Neuton.59:07
Piccoli Neuton concedes a free kick for a foul on Bradley Pritchard.57:59
Unfair challenge on Alexandre Geijo by Dorian Dervite results in a free kick. Nathaniel Chalobah takes the direct free kick.57:12
Corner taken by Daniel Pudil, Leon Cort manages to make a clearance.56:59
Alexandre Geijo takes a shot. Save by Ben Hamer.55:51
Piccoli Neuton restarts play with the free kick.55:51 Booking
Booking Booking for Lawrie Wilson for unsporting behaviour.55:40
Unfair challenge on Daniel Pudil by Lawrie Wilson results in a free kick.55:00
The ball is crossed by Chris Solly.54:19
Johnnie Jackson takes a shot. Manuel Almunia makes a fantastic save.52:33
The assist for the goal came from Fernando Forestieri.52:33 Goal scored
Goal! - Almen Abdi - Watford 2 - 2 Charlton Placed penalty scored by Almen Abdi. Watford 2-2 Charlton.51:25
Dorian Dervite challenges Fernando Forestieri unfairly and gives away a Penalty.50:57
Lawrie Wilson has an effort at goal from outside the penalty box which goes wide right of the target.50:30
The ball is delivered by Lawrie Wilson.49:18
Fernando Forestieri takes a shot. Ben Hamer makes a save.48:45
The ball is sent over by Cedric Evina.47:56
Centre by Dorian Dervite, Yann Kermorgant takes a shot. Save by Manuel Almunia.47:07
Almen Abdi gives away a free kick for an unfair challenge on Lawrie Wilson. Johnnie Jackson takes the direct free kick.46:10
Centre by Sean Murray, clearance by Johnnie Jackson.45:01
The second half begins.45:00 +4:19 Half time
Half Time The first half comes to an end.45:00 +2:05
Chris Solly concedes a free kick for a foul on Piccoli Neuton. Almen Abdi restarts play with the free kick.45:00 +1:32
A cross is delivered by Johnnie Jackson, clearance by Joel Ekstrand.45:00 +1:08
The ball is crossed by Sean Murray, save by Ben Hamer.44:32
Almen Abdi produces a right-footed shot from just outside the area that goes harmlessly over the target.44:00
Daniel Pudil sends in a cross, clearance by Leon Cort.43:27
Ricardo Fuller takes a shot. Comfortable save by Manuel Almunia.42:31
Ricardo Fuller produces a right-footed shot from just outside the area that goes wide left of the goal.42:08
The ball is crossed by Lawrie Wilson, Manuel Almunia makes a comfortable save.40:19
Free kick awarded for a foul by Bradley Pritchard on Marco Cassetti. Free kick taken by Tommie Hoban.38:43
Almen Abdi concedes a free kick for a foul on Dale Stephens. Johnnie Jackson takes the direct free kick.36:02
Bradley Pritchard provided the assist for the goal.36:02 Goal scored
Goal! - Yann Kermorgant - Watford 1 - 2 Charlton Yann Kermorgant grabs a headed goal from inside the six-yard box. Watford 1-2 Charlton.35:53
The ball is swung over by Bradley Pritchard,33:17
Assist on the goal came from Johnnie Jackson.33:17 Goal scored
Goal! - Tommie Hoban - Watford 1 - 1 Charlton Tommie Hoban puts the ball into his own goal. Watford 1-1 Charlton.32:31
Johnnie Jackson takes a inswinging corner from the right by-line played to the near post.30:36
Free kick taken by Ben Hamer.30:36 Booking
Booking Johnnie Jackson receives a caution for unsporting behaviour.30:31
Johnnie Jackson is adjudged to have handled the ball.29:52
Sean Murray takes a shot. Save made by Ben Hamer.29:33
Marco Cassetti sends in a cross, clearance by Chris Solly.28:34
Marco Cassetti crosses the ball, clearance made by Leon Cort.27:49
Fernando Forestieri fouled by Dorian Dervite, the ref awards a free kick. Free kick taken by Fernando Forestieri.23:29
Free kick awarded for a foul by Johnnie Jackson on Sean Murray. Tommie Hoban takes the direct free kick.22:34
Unfair challenge on Almen Abdi by Dale Stephens results in a free kick. Free kick taken by Almen Abdi.21:38
Ben Hamer takes the indirect free kick.21:38 Booking
Booking Fernando Forestieri receives a caution for unsporting behaviour.21:37
The referee penalises Fernando Forestieri for handball.18:45
Johnnie Jackson gives away a free kick for an unfair challenge on Joel Ekstrand. Free kick taken by Manuel Almunia.18:36
Chris Solly delivers the ball, clearance by Joel Ekstrand.16:53
Inswinging corner taken by Johnnie Jackson from the right by-line, Manuel Almunia makes a comfortable save.16:37
Effort on goal by Bradley Pritchard from just inside the penalty area goes harmlessly over the target.16:04
Almen Abdi challenges Dale Stephens unfairly and gives away a free kick. Johnnie Jackson takes the free kick.15:22
Ricardo Fuller takes a shot. Manuel Almunia makes a save.14:28
The ball is crossed by Lawrie Wilson, clearance made by Joel Ekstrand.13:33
Lawrie Wilson delivers the ball, Tommie Hoban makes a clearance.10:22 Goal scored
Goal! - Daniel Pudil - Watford 1 - 0 Charlton Goal scored by Daniel Pudil from deep inside the penalty area to the bottom right corner of the goal. Watford 1-0 Charlton.10:10
Alexandre Geijo takes a shot. Ben Hamer makes a save.9:31
Effort on goal by Yann Kermorgant from just inside the box goes harmlessly over the target.8:52
Inswinging corner taken from the left by-line by Dale Stephens.8:25
The ball is sent over by Daniel Pudil, Chris Solly gets a block in.7:40
Marco Cassetti crosses the ball.5:23
Yann Kermorgant produces a left-footed shot from just outside the box that misses to the right of the goal.2:58
Lawrie Wilson produces a cross.1:39
Johnnie Jackson fouled by Marco Cassetti, the ref awards a free kick. Free kick taken by Ben Hamer.0:00
The ref blows the whistle to start the match.
Live data and text provided by our data suppliers