Goydos was 13 under Sunday morning after finishing the third round, which was suspended by darkness on Saturday after rain delayed play for nearly five hours. Three-time champion Justin Leonard fell three strokes back after missing a 13-footer on the par-4 18th to bogey.
Johnson was 15 under after matching a course-record 10-under 60 at La Cantera Golf Club on Saturday. He rallied from a seven-stroke deficit and will play with Goydos and Leonard for the final 18.
Australias Marc Leishman was 11 under.