Dynamic bottlenecks occur when some cases in a particular part of the process are temporarily delayed. In performance-optimized systems such as production systems, warehouse automation systems, and baggage handling systems, such bottlenecks are rare, bounded in time and location, but costly when they occur and propagate through the system. Detecting and understanding the situations that cause such bottlenecks is crucial for mitigating and preventing processing delays. Classical process mining techniques that analyze performance along individual cases cannot detect these phenomena and their causes. We show that undesired system-level behavior can be detected when identifying temporal event patterns across different cases in the same process step. Conceptualizing these patterns as system-level events allows us to correlate them into cascades of system-level behavior using spatio-temporal conditions. We discover classes of frequent patterns in these cascades that describe behaviors that precede bottlenecks. Applied on event data of a major European airport, our approach could fully automatically detect cascades of undesired system-level behavior leading to dynamic bottlenecks. Each detected cascade was verified as a correct causal explanation for a dynamic bottleneck due to the physical system layout and its processing.