Billy Clarke scored the only goal as the Saddlers slipped to a third successive league defeat at the hands of play-off chasing Bradford.
Andreas Makris twice went close for the visitors in the first half, with Alex Jones having the Bantams’ best chance when his header was cleared off the line.
City improved after the break and took the lead on 58 minutes, Clarke slamming home after Mark Marshall’s cross wasn’t dealt with.
Wyke could have added to their advantage when he dragged a shot wide, while Kieron Morris brought a smart save from Colin Doyle as Walsall chased an equaliser late on.
The Saddlers remain in 13th place.
Neither team offered much of an attacking threat in the opening exchanges.
Although Bradford enjoyed more possession, the Saddlers looked more dangerous, with Kieron Morris having an early shot deflected wide and Scott Laird heading off target from a corner.
After Billy Clarke fired over on 25 minutes – the hosts’ first attempt – Andreas Makris went close for the visitors with a sweetly-struck long-range volley which fizzed narrowly wide.
The game’s first real chance fell to Walsall just past the half-hour.
Morris drove forward purposefully from deep before cleverly slipping in Makris, whose first-time effort was brilliantly tipped wide by Bantams keeper Colin Doyle low down to his right.
Play-off chasing City – unbeaten in their previous 27 league matches at Valley Parade, a run stretching back to March 2016 - almost snatched the lead five minutes before the break.
Neil Etheridge dropped Tony McMahon’s deep cross straight to Alex Jones – who appeared certain to score – but his close-range header was miraculously cleared off the line by James O’Connor.
Half-time: Bradford 0-0 Walsall
The Saddlers threatened first after the interval, Matt Preston sending a diving far post-header over from Morris’ in-swinging corner.
Subdued in the first half, Stuart McCall’s men looked brighter in the second, with Mark Marshall especially dangerous.
On 53 minutes, the Jamaican winger’s right-wing cross was turned towards goal by a stretching Charlie Wyke, but Preston managed to divert the ball to safety.
But the Saddlers defence was found wanting five minutes later as Bradford took the lead.
Marshall was again involved, drilling in a low centre which the visitors couldn’t clear, with the ball ricocheting favourably for Clarke to emphatically slam home.
City could have doubled their advantage 11 minutes from time when Meredith’s long ball was chased by Wyke, who outmuscled O’Connor before dragging an angled drive wide of the far post.
Walsall, quiet offensively in the second half, almost pulled level on a rare attack moments later as Morris’ left-footed drive from 16 yards was parried by Doyle.
Despite the late introduction of first-year scholar Mitch Candlin, there were to be no further chances as Bradford comfortably held on for the three points.
Full-time: Bradford 1-0 Walsall
Team: Etheridge, O’Connor, Preston, Laird, McCarthy, Chambers (Candlin 84’), Osbourne, Morris, Edwards, Moussa, Makris (Jackson 74’).
Subs not used: MacGillivray, Dobson, Kinsella, Roberts, Hayles-Docherty.
Attendance: 17,880 (205 Saddlers supporters).