Two of Peterborough’s goals were scored by 23-year-old Jack Marriott, a close season signing from Luton, who took his tally in all competitions to 21.
The visitors were rewarded for a lively start by going in front after 14 minutes when Danny Lloyd raced down the left before scoring with an angled shot into the far corner of the net.
Lloyd saw his shot rebound off the outside of the post before laying on the visitors’ second goal in the 32nd minute, crossing the ball for the unmarked Marriott to score with a diving header.
Bradford put Peterborough under strong pressure for the first 25 minutes of the second half and almost scored when keeper Jonathan Bond stopped a goal-bound shot from Tyrell Robinson with his legs in the 52nd minute.
However, Posh added a third goal in the 67th minute, breaking before Marcus Maddison played the ball through for Marriott to lob the ball over the head of the advancing Rouven Sattelmaier.
Paul Taylor, who joined Bradford from Peterborough last summer, scored a consolation goal against his old club with a long-range shot in the 83rd minute.
Bradford: Sattelmaier, McMahon, Thompson (Dieng 46), Kilgallon, Hendrie (McCartan 46), Gilliead, Vincelot, Law, Robinson, Taylor, Wyke. Unused substitutes: Reeves, Hanson, Knight-Percival, Raeder, Patrick.
Peterborough: Bond, Penny, Taylor, Tafazolli, Hughes, Grant, Doughty, Lloyd (Da Silva Lopes 79), Forrester, Maddison, Marriott. Unused substitutes: Shephard, Morias, Kanu,Anderson, O’Malley, Freestone.
Referee: D Handley (Lancashire).