World number one Alexei Klimov of Russia was the clear favourite going into the final, in which competitors must reel off five shots at five targets in the space of four seconds.
Klimov had broken his own world record in qualifying with a score of 592, and opened up this afternoon's final with a perfect five.
But his form suddenly deserted him and a series of low scores, including a two, saw him eliminated after round six.
Instead Pupo, 35, competing at his fourth Olympic Games, grabbed Cuba's first gold of London 2012.
He also equalled Klimov's finals world record with a score of 34.