A Pokemon is only as good as its Trainer. Pikachu probably could have stomped Paul's Pokemon single-handedly, but Ash made some wrong moves and wound up getting owned.
Yes there are levels. From a game standpoint, think of it this way.
You and your friend are battling each other, in the games, say, Diamond. Your friend sends out a L90 Grumpig, and you've got a L3 Croagunk recently hatched from an egg. You're royally screwed, right?
Most likely. If the user of Grumpig chooses to do Psychic, you get owned six ways from Sunday. That's to be expected, since there's a 87-level difference between you two.
But if the Grumpig decides to do stuff like Odor Sleuth, Splash, and Rest, and you attack with Toxic and various other status-altering moves, you will win.
The stronger Pokemon possesses the strength to beat the weaker one all along, but if the Trainer makes the wrong decisions, the weaker one will come out on top.