You could achieve this with a short Python script which chains together a couple of processing algorithms- Select by location and Save selected features. If we put these into a for loop, iterating over each feature in your County layer, selecting it and running Select by location (on selected features only) to select all census tracts which intersect the selected county feature and saving these as a new shapefile.
Firstly, create a folder in your local directory in which the output files will be saved.
Paste the following code into a new editor in the Python console (see image below).

Change the file path and layer names to match yours, and click run.
Disclaimer: I am not sure how long this will take to run on 1000 features.
import os
# change path to point to the folder you created earlier
path = 'C:/Users/Username/Desktop/Counties'
# change name strings below to match your layers
county_layer = QgsProject().instance().mapLayersByName('US_Counties')[0]
census_layer = QgsProject().instance().mapLayersByName('US_Census_Tracts')[0]
for f in county_layer.getFeatures():
county_layer.selectByIds([f.id()])
processing.run('native:selectbylocation', {'INPUT': census_layer,'PREDICATE':[0],
'INTERSECT':QgsProcessingFeatureSourceDefinition(county_layer.id(), True),'METHOD':0})
processing.run('native:saveselectedfeatures', {'INPUT': census_layer,
'OUTPUT': os.path.join(path, 'County_{}.shp'.format(str(f.id()+1)))})
# alternatively, you could use:
# 'OUTPUT': os.path.join(path, '{}.shp'.format(f['Name']))
# where 'Name' is the field in your county layer which contains the county name
county_layer.selectByIds([])
census_layer.selectByIds([])