Efter en imponerande vändning på Ramon Sanchez Pizujan hade Sevilla med sig en 2-1-ledning inför returmötet med Zenit.
En ledning Carlos Bacca redan i den 6:e minuten skulle öka på. Efter att Vitolo föll i en duell med Zenitförsvararen Neto pekade domaren på straffpunkten och därifrån gjorde Bacca inga misstag.
Början på den andra halvleken visade sig lyckosam för Zenit och Rondon kvitterade i den 48:e minuten efter att Beto i Sevilla-målet stått för en målvaktstavla. Portugisen släppte en billig retur som Rondon enkelt kunde bredsida in från nära håll.
Efter kvitteringsmålet var det Zenit som tog över initativet och Villas-Boas mannar skapade flera halvchanser bland annat genom Hulk.
Med 20 minuter kvar att spela uppfattade just Hulk att Beto var någon meter ut från mållinjen varpå brassen drog till med ett skott från närmare halva plan.
Beto lyckades inte avvärja bollen bättre än att den via ribban dök ner innanför mållinjen.
Zenit hade fortsatt kommandot i matchen och Sevilla fick begränsa sig till att slå bort bollen.
Mitt i all Zenit press stack Sevilla i den 85:e minuten upp i kontring som inbytte Kevin Gamerio avslutade med att stänka dit ett 2-2 mål. Det målet betydde att Zenit nu behövde göra två mål för att ta sig vidare.
Något Zenit inte klarade av och Sevilla är därmed klara för semifinal där Dnipro, Fiorentina eller Napoli väntar.
Vilka det blir avgörs i morgon 13.00 i en lottning som du kan se live här på fotbollskanalen.
Så startade lagen:
Zenit: Lodygin - Criscito, Lombaerts, Luis Neto, Smolinkov - Shatov, Javi Garcia, Witsel, Danny, Hulk - Rondon.
Sevilla: Beto - Coke, Pareja, Carrico, Tremoulinas - Krychowiak, Mbia, Banega - Aleix Vidal, Vitolo, Bacca.