Spieth rebounded from a disastrous double-bogey at the par-3 17th with a birdie on No. 18, then had to watch tensely as Johnson played the finishing hole.
After he hit a 5-iron from 246 yards to within 12 feet, Johnson rolled his eagle try several feet past. Still with a chance to force an 18-hole playoff Monday, Johnson missed the putt and gave Spieth his second consecutive major championship.
The 21-year-old Masters champion shot 1-under 69 to finish at 5-under par. Johnson shot 70 to finish at 4 under with Louis Ousthuizen, who had a 67 on Sunday.