GEN I: Vaporeon: He really saved my *** when battled an friends and did an solo against 3 level 100 starters. On that moment he still was level 90 and just owned them all 6 add the end by freeze status everyone of them. Icebeam just owned all.
GEN II: Raticate: Was second in first generation. In this generation there wheren't an lot of fighting pokémon or even fighting moves arround what made him serieus usefull to counter any kind of pokémon. He isn't good stats sided but could learn most types of moves. Vaporeon see to be less effective in this version. I'm not sure why but I gues it's the team-up settings of the trainers.
GEN III: Groudon (second closely: Rayquaza)
For higher I don't really have an favorite since there designs just start to suck.