If you have root you can use app2sd. I've used that on a number of devices, and was even able to set all new installs to go to the SD by default.
If you have Marshmallow (Android 6) you can make the SD part of the internal memory. (Mine is currently 73G large.) The upside is you can make the internal storage larger. The downside to it is you don't have it as external storage any more. But then you can move much of what's already installed and make new stuff go to that instead of internal. And it's still large enough to use the internal expansion space to put regular files.
In both cases not 100% of everything can be moved. Some can't be moved at all. Most apps leave some hooks in the internal storage that still uses space, albeit much less.
Older Android versions had the means to move apps to SD built into them. But Google changed that and took it away before coming up with the method used in Marshmallow.
I've read conflicting reports of some manufacturers enabling the ability to do that (one app at a time) on their devices with 4.X and 5.X versions. But I never encountered one, so I have no idea if it's true.
Those are the only ways I know about.
If it was me and the phone warranty was gone, I'd opt for root. (In fact, I've done it to phones and tablets I've barely owned a week.) With that you can partitioned the SD to use part of it to expand internal storage, part to make a separate swap (memory expansion) partition, and part of it to move or store other files like SD cards do when you put them in to begin with. But that's just me.