I've done alot of testing on this, and I found 2 methods to be the best.
One good method is to use a program that uses the Lanzcos interpolation method for resizing. Breezebrowser does this, as well as irfanview.
For absolute best results, I use Photoshop, and do what msvadi says, resize in steps.
When increasing size with PS, stair interpolation in steps of about 10% works best. However, when downsizing, bicubic works best when you resize down in 50% intervals. So, I made an action to resize down by 50%, and I press it, and press it again, and keep doing so until I get one size bigger than I need. Then for the final step I enter the exact size I want. Then, I add some slight sharpening.
For the final step, if you have Photoshop CS, you can select Bicubic Sharp for the final stage, and then you dont have to add any additional sharpening.
You may just want to use Bicubic Sharp for each 50% resize, but I found it ends up with an image that is a little over sharpened. So again, I leave it until after the last stage.
EOS R6 Mark II - Sigma 50/1.4 Art - Sigma 14-24/2.8 Art - Canon EF 70-200/2.8L Mark III - Godox Xpro-C - Godox TT685C x2