I soft-reset on him so many times trying to catch a good one. Like, seriously, on and off for several weeks. It was imperative that I catch a fast one so that it could outspeed a max-speed Darkrai, so what I would do is lead with a Pokemon that had the same speed as a max-speed Darkrai. If Mewtwo moves first, then he's fast enough and I catch it. If I move first, then I reset so I don't have to trouble myself with catching and checking its stats.
After so many resets, I figured that I must have done my math wrong somewhere and started researching. Turns out that in Gen 1 through Gen 3, the badges give your party Pokemon a 10% stat boost in the quest, so I thought the wild Mewtwo was slower than it actually was because my trained Pokemon kept outspeeding it with their boost. So next time I come prepared with the proper one-under speed Pokemon and my dedicated FRLG catcher: a level 80-something Parasect with Leftovers, Double Team, Swords Dance, False Swipe, and Spore. Also had about 50 Ultra Balls and 50 Timer Balls in tow.
Double Teamed six times to max out evasion, Swords Danced three times to max out attack and make sure that I could always knock him right back down to 1 HP after each Recover. Even then, it took so long and I burned through so many turns and Pokeballs that the son of a bitch actually ran out of moves and started Struggling himself to death with 1 HP remaining. Fortunately, since my evasion is maxed out he only has a 25% chance of hitting me and therefore never managed to do so and KO himself from recoil damage.
After what seemed like an eternity I finally nail the bastard and check its stats:
Mewtwo (Timid) 29/22/28/23/28/24
So worth it.