I think Misdreavus is the easiest and fastest way to defeat Red's Snorlax. Level 16 Gastly is good and takes around the same time to get it than Missy with Perish , but with Gastly takes time to Snorlax to die (however Spite helps against Rest's PP)
Catch a Missy on Mt. Silver at night, however is rare, raise it's level by 1, it learns Perish Song.
Perish Song + Mean Look. Snorlax dies easily. It's possible to let Misdreavus die on it's own Perish to avoid Snorlax to hit with Body Slam to another mon of your team while switching Missy to avoid Perish Song, anyways Misdreavus is not going to do nothing useful besides that, unless death fodder.
Catch a Missy on Mt. Silver at night, however is rare, raise it's level by 1, it learns Perish Song.
Perish Song + Mean Look. Snorlax dies easily. It's possible to let Misdreavus die on it's own Perish to avoid Snorlax to hit with Body Slam to another mon of your team while switching Missy to avoid Perish Song, anyways Misdreavus is not going to do nothing useful besides that, unless death fodder.