In a variety of neural data analysis problems, 'neural events' such as action potentials (APs) or post-synaptic potentials (PSPs), must be recovered from noisy and possibly corrupted measurements. For instance, in calcium imaging, an AP or group of APs generate a stereotyped calcium signal with a quick rise time and slow decay. In this work, we develop a general-purpose method for: (i) learning a template waveform that signifies the presence of a neural event and (ii) neural event recovery to determine the times at which such events occur. Our approach is based upon solving a sparse signal separation problem to separate the neural signal of interest from any noise and other corruptions that arise due to baseline drift, measurement noise, and breathing/motion artifacts. For both synthetic and real measured data, we demonstrate that our approach accurately learns the underlying template waveform and detects neural events, even in the presence of strong amounts of noise and corruption. The method's robustness, simplicity, and computational efficiency makes it amenable for use in the analysis of data arising in large-scale studies of both time-varying calcium imaging and whole-cell electrophysiology.