Something worth noting is that, even with a Macho Brace as a held item, a Level 50 Samurott with zero investment in Speed EVs, a Speed-lowering nature, and 0 Speed IVs still outspeeds a Level 15 Tympole with a Speed-boosting nature and 31 Speed IVs (33 vs. 30 Speed). Though this scenario is unlikely, especially as the OP was training for Speed EVs, the point is that even with the Macho Brace, Samurott still outspeeds Tympole no matter the IVs, EVs, or nature. It's likely other conditions were met for this to happen.
The most likely thing that happened was that the Samurott was already paralyzed by Prankster Cottonee. Cottonee can be found in Pinwheel Forest knowing Stun Spore, also giving Speed EVs. It's likely the OP encountered Cottonee, battled it, and was paralyzed on the first turn from Stun Spore thanks to Prankster giving status moves +1 priority. Their Samurott would then go on to battle a Tympole that would outspeed it, thanks to Paralysis lowering Speed significantly.
The next most likely thing is Tympole used BubbleBeam a turn prior, which lowered Samurott's speed. As the Samurott could've missed a move like Hydro Pump, Megahorn, Aqua Tail, etc, this is the only other plausible explanation I could come with.
There are a few other factors, but they all require Samurott or another Pokémon deliberately using a move that allows the Tympole to outspeed.
- During the wild battle, the Samurott used Rain Dance. This would double the Tympole's Speed if its ability was Swift Swim.
- The Samurott used a negative priority move, such as Dragon Tail.
- Trick Room was active, allowing the Tympole to go first. Though, this would have to be set up by other Pokémon.
As this post is rather old however, the OP could very likely be misremembering.