Barcelona had reached the final of the competition in each of the last six years, winning four of them, but were dumped out this year after some late drama at San Mames.
With the five minutes of added time played, and the tie appearing set for extra-time and possibly a penalty shoot-out, Williams glanced the ball past Barcelona goalkeeper Marc-Andre Ter Stegen to snatch a dramatic victory.
It did not take long for Lionel Messi – whose row with director Eric Abidal had overshadowed the build-up to the match – to carve open the home defence as he set Ansu Fati clear, but the 17-year-old forward sliced his shot wide.
Athletic, whose last of 23 Copa del Rey triumphs came in 1984, thought they had opened the scoring after 10 minutes when Williams knocked the ball in from a corner, but the offside flag was raised.
There was a let off for Ter Stegen when his stray pass fell to Raul Garcia, but the midfielder shot wide from the edge of the penalty area.
As half-time approached, Barcelona were awarded a free-kick in a central position 25 yards out, but Messi's effort hit the wall.
It was a low tempo opening following the restart, before Messi sent Frenkie De Jong clear into the penalty area, where the Dutchman went to ground – and was shown a yellow card for simulation.
Barcelona boss Quique Setien sent on Griezmann to replace Fati for the final 30 minutes – and the French forward was soon in the action as he sent a shot over the crossbar.
De Jong went down again the penalty area, this time under close guard from Bilbao midfielder Ander Capa, but the referee was not interested and waved play on.
In the 70th minute, Roberto got away down the right and cut the ball back to the penalty spot, where Griezmann's low shot was saved by Unai Simon.
After weathering so much pressure, Bilbao almost snatched the lead when Williams' early shot flew over.
Simon again came to the rescue for the home side when Messi was put through by substitute Arthur, but his shot was blocked by the keeper's legs.
As the clocked ticked down, Williams put a volley wide at the back post.
But he made no mistake when substitute Ibai Gomez floated a cross over as Williams guided a header into the corner and sparked wild celebrations from the hosts.