Walsall suffered their first defeat of the season as Cambridge United netted two penalties to secure the three points at the Banks’s Stadium.
Paul Mullin scored his 12th of the season with his spot-kick nine minutes into the game after Liam Kinsella tripped Luke Hannant.
Joe Ironside made certain of the result when he converted his penalty with 10 minutes to go after Hayden White handled in the area.
Darrell Clarke made four changes to the team that started against Barrow on Saturday.
Wes McDonald, Danny Guthrie, Rory Holden and White all came into the side in place of Cameron Norman, James Clarke, Alfie Bates and Emmanuel Osadebe.
The visitors made a lively start to the game as the U’s pressed well in the opening exchanges.
Cambridge made their early pressure count and were awarded a penalty after eight minutes when Liam Kinsella tripped Luke Hannant in the area.
In-form Paul Mullin stepped up and despite Liam Roberts getting a hand to it, the ball found the back of the net and Cambridge took the lead.
Walsall looked respond immediately and had their first real chance of the game when McDonald cut inside onto his right foot and rifled in a low shot but it didn’t trouble Dimitar Mitov who collected the ball.
The Saddlers started to enjoy a lot more possession but struggled to break down a well drilled Cambridge side.
Mark Bonner’s side came close to doubling their lead on 27 minutes when Mullin’s miss-hit shot fell to Hannant who smashed the ball goalwards but Roberts reacted brilliantly to tip it over.
Walsall again enjoyed plenty of possession but were quite sloppy and Cambridge frustrated them in the first half.
The second half began in similar fashion to how the first ended with the Saddlers having plenty of the ball and a lot of set pieces but struggled to create anything clear cut.
It was the visitors who had the first big chance of the second half when Roberts miss-judged a free-kick and the ball dropped to Robbie Cundy at the far post but he prodded the ball wide of the target.
Walsall had Roberts to thank on 67 minutes after he made another fine save to deny Mullin low to his right to keep the home side in it.
Clarke made a double change with 20 minutes to go as he introduced Osadebe and Bates in place of Kinsella and George Nurse.
Scrimshaw followed minutes later as he replaced Adebayo but things got worse for the Saddlers soon after as they conceded another penalty when White was adjudged to have handled the ball when he slipped in the area.
Ironside stepped up and slotted into the bottom corner to double their lead and they saw the game out to end Walsall’s 13 match unbeaten league run.
Roberts; White, Scarr, Jules, Nurse (Osadebe), Kinsella (Bates), Guthrie, Holden, McDonald; Lavery, Adebayo (Scrimshaw).
Subs: Rose, Sadler, Sinclair, Norman