Lee Bowyer made three changes to his starting line-up. Josh Cullen and Ben Reeves returned, and Jamie Ward made his debut.
Bowyer reverted to a flat back-four for this game – Naby Sarr being the defender to drop to the bench – but continued with a diamond midfield quartet.
Cullen was at the base, Joe Aribo and Reeves were in the middle, with Ward at the tip.
The game got off to a breathtaking start, and Bradford nearly scored inside the first two minutes.
Sean Scannell swept to the byline to deliver a cross to Eoin Doyle. The striker made a clean connection but Jed Steer made an instinctive save to somehow keep the ball out.
The Bantams’ disappointment multiplied just a minute later. A superb through ball from Cullen found Grant, who danced along the byline before cutting back out, and unleashing an unstoppable shot into the far corner.
The Addicks largely dominated first-half proceedings and will have been disappointed not to have had a bigger lead at the interval.
Taylor, Grant and Ward had the best chances, with Scannell having the best opportunity for the hosts.
It was a different story after the break though. Bradford had the upper hand, dominating possession without creating many clear cut chances.
They paid the price nine minutes from time. Taylor collected the ball just inside the left-hand corner of the box. He shifted the ball to his right foot before unleashing a curling shot that left Richard O’Donnell grasping thin air.
Charlton saw out the game without too many scary moments.
The win moves them up to seventh in the table, just six points behind league leaders, Portsmouth.
A delighted Lee Bowyer gave his thoughts after the final whistle:
”In the first half, we were excellent. We moved the ball well and I think we should have been two or three up at half-time, but we need to be more ruthless and put teams to bed.
“In the second half, we made it tough on ourselves, we gave the ball back to them too easily at times and they put us under a bit of pressure without creating any chances.
“But the most important thing is that we got the three points and a clean sheet. It’s a tough place to come. I came here as a player and lost so it’s definitely tough. The crowd get behind them, but we all stuck together and thoroughly deserved the three points.”
Charlton: Steer; Solly, Bauer, Pearce, Page; Cullen, Reeves (Lapslie 65), Aribo, Ward (Vetokele 75); Taylor, Grant (Sarr 90).
Subs (not used): Phillips, Dijksteel, Morgan, Marshall.
Goals: Grant 3, Taylor 81
Booked: Grant 26 (diving), Aribo 56 (diving), Solly 70 (foul), Page 73 (foul).
Bradford City: O’Donnell; McGowen, O’Connor, Knight-Percival; Scannell (Gibson 83), J O’Brien (Isherwood 88), L O’Brien, Wood; Ball (Bruenker 74), Doyle, Payne.
Subs (not used): Sykes-Kenworthy, Miller, Seedorf, Goldthorp.
Booked: McGowan 11 (foul), Knight-Percival 71 (foul).
Referee: Jeremy Simpson (Lancashire).
Attn: 15,709.