Asked to bat, Gujarat stacked up 210-4 and appeared to have the game in the bag after Delhi’s chase wobbled when KL Rahul departed after a 52-ball 92.
Miller, who had earlier retired hurt with a hand injury, returned to transform a canter into a cliff-hanger before Delhi finished on 209-8, agonisingly short.
The decisive moment came in the final over. With two needed off the last two balls, Miller refused a single on the fifth delivery, sending back Kuldeep Yadav in search of the winning boundary.
Miller then failed to connect with the final ball, and though the pair set off, wicketkeeper Jos Buttler nailed a direct hit to run out a diving Kuldeep.
Miller remained unbeaten on 41 off 20 as Delhi slumped to their first defeat this season.
Earlier, Gujarat built their total on a trio of half-centuries.
Captain Shubman Gill, back after a neck sprain, set the tempo with a poised 70. Buttler’s 52 and Washington Sundar’s 55 powered a breezy middle phase after the early loss of Sai Sudharsan.
Lungi Ngidi dragged Delhi back with a disciplined spell at the death, restricting Gujarat to just 58 from the final six overs.
Delhi’s pursuit roared to life through Rahul and Pathum Nissanka (41), who blasted 76 for the first wicket.