Bolton's number eight drilled the ball in low, but his effort went inches wide of the woodwork.
Next, Charles managed to win the ball high up the pitch and used some neat footwork to attempt to take the ball around Marko Marosi in the 55th minute, but the Slovakian keeper made himself big and blocked the effort.
Bradley then made a jinking run on the hour mark and shot from the edge of the box.
But his effort took a deflection, and the crossbar denied the attacking full-back.
The Wanderers pulled ahead in the 63rd minute when Sheehan received a pass from the right.
The Welshman took a touch and unleashed a powerful curling effort from 25 yards out which found the top corner.
Steve Cotterill went for a personnel change in the 68th minute when Elliott Bennett replaced Street, and Christian Saydee came on for Bloxham.
The substitutes also meant a change of shape, with Town moving to a 4-2-3-1.
Saydee came in at right and Bennett at left wing, with Killian Phillips sandwiched in between as the number 10 in behind Bowman. Luke Leahy and Carl Winchester played as the two holding midfielders.
With just over 20 minutes to go, Dempsey got a shot away inside the box.
But Marosi managed to get down well and make a one-handed save to push it out for a corner.
The home side remained on top, and Adeboyejo was fed through on goal.
However, Marosi was once again able to read the danger quickly and rushed out to make himself big to block the ball with his head.
Town were unable to muster up another clear chance and despite a spirited performance, they had to travel back to Shropshire empty-handed.
Marosi (GK), Leahy, Pennington, Moore, Winchester, Phillips, Bowman, Street (Bennett, 68), Bloxham (Saydee, 68), Dunkley, Shipley
Burgoyne (GK), Craig, Barlow
Trafford (GK), Jones (C), MJ Williams, Johnston, Sheehan (Lee, 76), Charles (Kachunga, 82), Morley, Bradley, Dempsey, R. Williams, Adeboyejo (Nlundulu, 76)
John, Shoretire, Thomason, Jerome
Bookings: Winchester, Bowman; MJ Williams