Plase consider framing your question with details / images about expected result, in that way it is more clear what you are aiming to.
The options you have are always delimited by performance. In the case of a static scene, baking lightmaps is the way to go. You can add a (selective) pass like this to enhance the effect, tweaking the parameters can give you actual good results. @prisioner849 shared a cery clever demo some time ago starting from this.
If your scene is dynamic you could try, to a certain extent, using threejs light emitting alternatives, like rectAreaLights and/or actual lights. Keep in mind that this is limited, again, for performance reasons.
Finally, don’t take for granted implemented features working with non-web tech inside threejs and even WebGL in general. In that regard, “thousands of polygons” just traslate as “non optimized data for a web running spec”.
Unless of course you are explicitly trying to push-the-limits of web capabilities, if that is the case you could take a look at lighProbeVolume proposal for incoming light of dynamic objects (see here), and Virtual Geometry for a ‘continuous’ view-dependent representation of hi-poly geometry.