Lately for in-game I've been using two or three Pokemon only. This strategy works well since, rather than only having one Pokemon with excessive training and serveral type matchups that destroy it or a team of six evenly-trained but low-levelled Pokemon, you have enough Pokemon to easily keep them even in level, and at the same time balance out type advantages/disadvantages, AND by the time you get to the E4 they're between Lv.50 and 60. However the only way it works properly is if you battle EVERYONE you can. Like all in-game long term strategies, it takes time to keep your Pokemon in shape so that you aren't doomed at the last Gym or Champion.
In FireRed I used Blastoise, Nidoking, and Raichu. In Pearl I used Torterra and Toxicroak. See how it works out? If the Pokemon you choose are well balanced in types, move types, and stat-related abilities, it works even better. A Physical attacker and a Special attacker, a Defensive tanker and a Speedy sweeper... Sometimes it helps for backup to add a main legend in the back of the team for the E4 just in case. Works well for me. :D