Bilbao had another excellent chance just before the 30-minute mark when Yeray Alvarez met a free kick from Benat, but his effort was just deflected over the Barcelona crossbar.
Barca enjoyed more control in the second half after homegrown midfielder Carles Alena replaced an erratic Arturo Vidal but exhausted as the game progressed.
Bilbao had a golden chance to take the lead 25 minutes from time when San Jose found space in a unsafe position, but the midfielder's effort just missed the post.
The visitors' first sight to goal arrived with seven minutes left in the first half, as Lionel Messi ventured forward to force a sterling save out of Iago Herrerin. Williams then had a goal-bound flick blocked during an extremely open period of the match. Messi was picked but not fully recovered while Ousmane Dembele was fit enough only for the bench, having shaken off an ankle injury.
Suarez glanced a 22nd-minute header wide from Messi's inviting cross as Barca responded, but Ter Stegen was called upon once again to keep out Raul Garcia's acrobatic volley two minutes later.
Ter Stegen's reflexes then came to the aid of the visitors to prevent another close-range strike from Williams, before the home side had Oscar de Marcos sent off for picking up a second yellow card late on.