With Liverpool star Suarez confined to the bench recovering from a knee injury, Costa Rica grabbed a third through substitute Marcos Urena to throw Group D, which also features England and Italy, wide open. Uruguay's Maxi Pereira was red-carded in injury time to compound his team's misery.
Both Uruguay and Costa Rica missed the service of their two key players
Uruguay had the ball in the net after 15 minutes but Diego Godin's effort was rightly ruled out for offside. German referee Felix Brych called it right again in the 22nd minute when defender Junior Diaz was penalised for hauling down Uruguay skipper Diego Lugano in the box. Up stepped Paris Saint-Germain striker Cavani to calmly bury the penalty to the right of Costa Rica goalkeeper Keylor Navas.
It was Cavani's 22nd goal in 63 internationals.
Uruguay went close to a second goal in the closing moments of the first half when veteran striker Diego Forlan's shot took a huge deflection which forced a back-pedalling Navas into a dramatic tip over. In the 54th minute, Costa Rica were level with 21-year-old Campbell, who spent last season on loan at Olympiakos from Arsenal, firing in a superbly controlled drive from Cristian Gamboa's cross.
It got better three minutes later when Duarte dived bravely at the feet of Christian Stuanito to head in a free-kick for a 2-1 lead. Substitute Urena latched on to a fine pass by the influential Campbell in the 84th minute to make it 3-1 before Pereira became the first player sent off at these finals for a wild lunge on Campbell.