Mario doesn't destroy Sonic. I actually feel that Sonic might have the advantage against Mario. This is based off of my experience of beating Boss, granted this was years ago, but I think it still holds true. Luigi on the other hand...
If rolling is your problem, get better. Unless it's like, Lucario, rolling is a generally pretty unsafe option since it's very predictable and punishable. Pick up player habits and predict when they're going to roll, bait it, and punish accordingly. When their roll is over, the invincibility will be gone but they'll still experience a sort of cooldown where they can't do anything, so strike then. This is a player thing, not a match up problem. Learn character roll distances and etc. and just learn to player. You'll find yourself being infinitely better when you can recognize and capitalize on these things. Sonic has a pretty even ratio of good to bad match ups, and he doesn't get hard countered by any one character which not many characters around Sonic's tier can flaunt, so that already gives you a pretty good footing.
Also I'm just gonna toss out that I think Lylat is one of Sonic's best stages. It ****s up a lot of characters with it's stupid ledges, there's a lot of room for running, and the platform placement is super nice for stage control and Sonic can just utilize the layout of this level really nicely imo. The ledges aren't really an issue for Sonic since he can't sweetspot with his Up B anyway, so you're always going to try to be recovering high and landing safely somewhere on the level as a general rule of thumb. The glitchy/moving ledges are pretty negligible whereas a lot of characters will despise it.
Other than that, just lurk this board more. Learn as much as you can. If you still can't find the answers to more specific questions you may have, take it to the FAQ.