Try to move forward and push them to the corner. Focus the fireballs to increase ultra meter (be wary of ex fireballs and the health you need to regenerate after absorbing the fireball). Block them and reversal oil dive + coward crouch cancel to increase ex meter. If you have ex meter, try to get oil and slide.ex + punch followup to get them. If you have super, push them to the corner or get close enough to do super.hp (focus forward dash a fireball while buffering super and if they throw another when you are still dashing press hp to get them).
Notice what type of patterns they implement… some shotos like to jump at you when you jump over a fireball, others like to move forward somehow to try punish you. This information will help you figure out how to punish them… does U2 punish them? does super punish them? slide.lp? anti-air f.hp? anti-air f.mp? anti-air f.lp?
I find Akuma and Sagat the hardest shoto matchups, specially a really good Akuma’s. Sagat its easier if you have oil and ex meter.
Good players usually stop spamming fireballs if they see your using them to increase your ultra meter.
Practice on training mode, record Sagat spamming fireballs and try to gain ultra, ex meter and oil yourself while losing the least amount of health.
Online lag sucks.