Bereits in der Saison 2003/04 setzten die Mighty Ducks den Rechtsschützen regelmäßig in der NHL ein, als einer der besten Rookies wurde Lupul für das NHL YoungStars Game 2004 nominiert. Den Lockout in der folgenden Spielzeit verbrachte der Kanadier beim FarmteamCincinnati Mighty Ducks in der American Hockey League. Im Conference-Halbfinale der Stanley-Cup-Play-offs 2006 gegen die Colorado Avalanche schaffte es Lupul als erster Spieler in der Geschichte der höchsten nordamerikanischen Eishockeyliga, vier Tore in einem Play-off-Spiel, inklusive des spielentscheidenden Tores in der Verlängerung, zu erzielen. Dennoch wurde der Angreifer nach der Saison zusammen mit Ladislav Šmíd und mehreren Draftpicks im Tausch gegen Chris Pronger zu den Edmonton Oilers transferiert. Diese gaben ihn wiederum am 1. Juli 2007 zusammen mit Jason Smith für Joni Pitkänen und Geoff Sanderson an die Philadelphia Flyers ab. Am 26. Juni 2009 gaben die Anaheim Ducks bekannt, dass sie Lupul, zusammen mit Luca Sbisa und einigen Draftpicks, gegen Chris Pronger und Ryan Dingle von den Philadelphia Flyers transferiert haben. Sein zweites Engagement in Anaheim dauerte fast zwei Saisons, in denen Lupul zwar gute Leistungen zeigte, allerdings aufgrund von Verletzungsproblemen nicht mal die Hälfte aller Spiele absolvierte. Im Februar 2011 gaben ihn die Kalifornier an die Toronto Maple Leafs ab, um den Verteidiger François Beauchemin in einem Tauschgeschäft von den Leafs zu erwerben.
Aufgrund des NHL-Lockouts absolvierte Lupul im Herbst 2012 für Awtomobilist Jekaterinburg einige Partien in der Kontinentalen Hockey-Liga. Anschließend übernahm er bei den Maple Leafs das Amt des Assistenzkapitäns, ehe er Mitte der Saison 2015/16 verletzungsbedingt ausfiel. Diese hatte letztlich das Ende seiner aktiven Karriere zur Folge, in der er 701 Partien absolvierte und dabei 420 Punkte erzielte.
(Legende zur Spielerstatistik: Sp oder GP = absolvierte Spiele; T oder G = erzielte Tore; V oder A = erzielte Assists; Pkt oder Pts = erzielte Scorerpunkte; SM oder PIM = erhaltene Strafminuten; +/− = Plus/Minus-Bilanz; PP = erzielte Überzahltore; SH = erzielte Unterzahltore; GW = erzielte Siegtore; 1Play-downs/Relegation; Kursiv: Statistik nicht vollständig)