Make sure your codes are clean!
I cannot reiterate this more, but your website needs clean codes.
When optimizing a website, html, css & scripts will and should be minimized for faster page load. If your codes are messed up, it will likely break your site.
Themes and Page Builders are great if you want a quick and easy website development, but most of those adds unnecessary codes that will add pageload and will make it harder to achieve a high speed score.
If getting a high speed score is really important to you then invest in a WordPress developer so you can have a custom-coded WordPress Theme.
Use One of These Caching Plugins
Test which plugins you can use and which works best at the same time. I use different plugins per website, it’ll always depend on your server and the theme you use.
W3 Total Cache
url: https://wordpress.org/plugins/w3-total-cache/
This works best if you’re website is on a dedicated server. On shared hosting, it consume’s a lot of memory and your CPU’s usage goes high.
Autoptimize
url: https://wordpress.org/plugins/autoptimize/
WP Fastest Cache
url: https://wordpress.org/plugins/wp-fastest-cache/
WP Rocket (Paid Plugin)
JCH Optimize
url: https://wordpress.org/plugins/jch-optimize/
Image Optimizers
WP Smush
url: https://wordpress.org/plugins/wp-smushit/
EWWW Image Optimizer
url: https://wordpress.org/plugins/ewww-image-optimizer/
Imagify
url: https://wordpress.org/plugins/imagify/
Async JS and CSS
url:https://wordpress.org/plugins/async-js-and-css/
Async JavaScript
url:https://wordpress.org/plugins/async-javascript/
CAOS for Webfonts
url: https://wordpress.org/plugins/host-webfonts-local/
CAOS for Analytics
url: https://wordpress.org/plugins/host-analyticsjs-local/
Use CDN
How does CDN work?
Basically, it stores a cached version of your site to a geographically distributed group of servers which will make your website load faster.
Server
So, now you have a theme with clean codes, installed & configured plugins, optimized the images, used a CDN, but why is the pagespeed score still low?
This is usually the remaining issue: Reduce server response times (TTFB)
Simply, a server issue.
If you really wanted to have 90+ score on PageSpeed Insights and have cash to spare, then change/upgrade your web hosting.
From experience, upgrading to a Managed WordPress Hosting really bumped one of my site’s speed score up.