With 5:09 left, Robert Hatter scored back-to-back layups to give Cornell a 49-47 lead. Troy Whiteside hit a 3 and, after Antwon Portley hit two free throws for the Peacocks, Morgan followed with another 3 to make it 55-49 with 3:01 to play.
Quadir Welton's layup brought St. Peter's within four before Morgan made a layup and two free throws to make it 59-51 with a minute left.
Chazz Patterson and Portley made back-to-back 3s to pull the Peacocks within 63-61, but they could get no closer.
Morgan and Hatter combined to make 8 of 8 free throws in the final 62 seconds.
Wil Bathurst led Cornell (6-6) with 18 points and Hatter added 16.
Portley led St. Peter's (4-7) with 22 points. The Peacocks outrebounded Cornell 51-38.