The broad gains extended the S&P 500's winning streak to a fourth day, despite losing some of its early momentum on news that Florida had another sharp increase in confirmed coronavirus cases.
Energy companies were among the big gainers as oil prices strengthened on hopes that a recovering economy will mean more demand.
The S&P 500 rose 14.15 points, or 0.5%, to 3,130.01.
The Dow Jones Industrial Average gained 92.39 points, or 0.4%, to 25,827.36.
The Nasdaq climbed 53 points, or 0.5%, to 10,207.63.
The Russell 2000 index of small company stocks added 4.55 points, or 0.3%, to 1,431.86.
For the week:
The S&P 500 gained 120.96 points, or 4%.
The Dow added 811.81 points, or 3.3%.
The Nasdaq rose 450.41 points, or 4.6%
The Russell 2000 picked up 53.08 points, or 3.9%.
For the year:
The S&P 500 is down 100.77 points, 3.1%.
The Dow is down 2,711.08 points, or 9.5%.
The Nasdaq is up 1,235.02 points, or 13.8%.
The Russell 2000 is down 236.61 points, or 14.2%.