If they're spinning, I shield the moment they stop charging and start flying at me.
That was actually a pretty major part of my game against the two Sonics I played again. It basically stopped all of their mixups, which they had used to good success against their previous opponents. Unless there is some sort of mysterious tech that they (and I) didn't know about, they can't cancel Side B or Down B directly into grab. After that they either canceled it early (react to what they do after that as needed), canceled it behind me (Bair bait), or canceled it after jumping up and through me (Utilt/Usmash/Uair/Bair/Nair/Turn-Around Aether bait).
If they weren't trying to spin dash me, I focused heavily on Fair/Bair/Dtilt/Jab/Grab. Didn't use any other attacks if we were both on the ground/close to the ground as they left me too open and would result in them dash grabbing me. If they tried to recover high or ending up trying to hit me with an aerial while I was on the ground I would either Utilt or Usmash depending on the situation. Usmash is dangerous, they can bait you by moving into the edge of Usmash range, then homing attack (which raises them up and out of range as you swing), then smash into you during your recovery time. If they were recovering low I used Eruption more for forcing them to make their recovery predicable rather than trying to hit them after spring, but if it connected it connected.
If they tried to Uthrow -> Spring -> Uair me I would go for a Wavebounced Eruption. Spring would send them flying into the hitbox and then up and KO'd. It is risky though, sometimes I went for Counter instead just so I could safely get down or even just QD out of the way and fast fall back down. Counter in general I would throw out on rare occasion when I knew they were fishing for a Fsmash/Bair kill, basically to get into their head and make them try to kill me less. Nair I could get back from if it didn't outright kill me so I didn't worry much about that one in general.
I admit its a rather exhausting MU. I had to face both Sonics back to back. The second one managed to get into my head and deal about 90% damage without me being able to touch him in one of the later stocks. I then managed to string 3-4 Bairs in a row, got him off stage, and then he accidentally Dair'd while I was trying to Dair him. He was trying for Nair so he would have gotten hit anyways, but it basically sealed the game for me. Spend the last 40 seconds running away with Quickdraw and good DI.
Overall to me though, the key is forcing them to be predictable. Sonic has so many options, so you got to get into the Sonic player's head. Make them think that their spin tricks are worthless and that every time they go for a kill move you have a counter against it. Make Ike seem nearly as fast as Sonic by sticking with the moves with little to no ending lag. When you have momentum, go all out and just keep wailing on them. The moment they stop that momentum go defensive and turtle.