McDermott was unguarded with 2.8 seconds to play when he knocked down a 3-pointer to seal the win and extend the Creighton (18-3, 8-1 Big East) winning streak to three games.
McDermott went 5-for-9 from 3-point range and was the only Blue Jay in double figures.
D'Angelo Harrison scored 15 points for St. John's (12-9, 2-6 Big East), which had its three-game winning streak come to an end. Rysheed Jordan and Chris Obekpa scored 11 points apiece.
St. John's trailed by 18 in the second half but roared back to tie the game 58-58 with 1:22 left to play. Creighton tried to pull away but the Red Storm tied the game 60-60 with 11.1 seconds to play on a pair of free throws by Jordan, which set the stage for McDermott's dramatic jumper.
Handler slams Piers Morgan: 'You're a terrible interviewer'
Astronomers offer more expansive view of universe