Lab scores are not field data
A local Lighthouse run tells you about one device on one network. Google ranks on field data from real visitors. Before optimising anything, look at your Chrome User Experience Report data - the gap between lab and field is often where the actual problem lives.
Fix one: the largest image
Largest Contentful Paint is usually a hero image, and the fix is rarely subtle. Serve modern formats, size the file to its rendered dimensions rather than the original export, set explicit width and height, and preload it. Everything below the fold gets lazy loading.
This single change moves more B2B sites from "needs improvement" to "good" than any other.
Fix two: fonts
Custom fonts block text rendering. Self-host rather than pulling from a third-party origin, preload the one or two weights actually used, and set a swap behaviour with a metric-adjusted fallback so the swap does not shift layout. Loading nine weights when the design uses two is common and entirely avoidable.
Fix three: third-party scripts
Analytics, chat widgets, heatmaps and tag managers accumulate quietly and are almost always the largest contributor to interaction delay. Audit what is loaded, delete what nobody reads, and defer the rest until after first interaction. A chat widget that loads on idle instead of on parse costs nothing in conversions and buys back significant responsiveness.
When to stop
Once you are comfortably inside the thresholds on field data, stop. The next percentage point of a lab score is worth far less than a clearer value proposition on the page.