Bowser. Sonic could dodge all of Bowser's attacks, but his attacks are weak, and bowser is big and strong and has flinch resistance so he could just swipe Sonic away with his claw when Sonic comes in to attack.
I'm going with Bowser, only because Sonic is weak. Sonic could dodge 1,000 attacks, and land 1,000 attacks, but Bowser could land 1 good one, and it'd knock the rings right out of Sonic.
Bowser would probably get tired in the process too, swinging at Sonic when he goes by. I personally think sonic would win cause bowser would never hit him and sonic could just keep nailing him from all over.
I would say sonic. If Mario can beat Bowser then sonic can too. Sonic's speed alone would own Bowser. He is strong, but very slow. Sonic would win imo.