The Puerto Ricans went hitless in their first 12 at-bats with runners in scoring position but still overcame a 3-0 deficit to score once in the sixth inning and three times in the eighth. Rios crossed the plate standing up for the final run on a grounder to shortstop, which Jack Santora backhanded before throwing wide to first.
That was one of four misplays by Italian shortstops, including three in the sixth by Anthony Granato, who allowed an unearned run to score and was then replaced by Santora.
The Italians blew a 4-0 lead in a loss Tuesday to the Dominican Republic.
The Puerto Ricans advance to Friday's game against the winner of Thursday night's game between the United States and Dominican Republic. R.A. Dickey will start for the U.S. team, and Minnesota Twins right-hander Samuel Deduno starts for the Dominicans.
Italy's Anthony Rizzo broke a scoreless tie with a three-run double in the fifth, and Puerto Rico trailed 3-1 going into the bottom of the eighth.
Carlos Beltran led off with a walk, took third on a single by Yadier Molina and scored on Mike Aviles' groundout.
With the retractable roof open at Marlins Park and the temperature in the 60s, fans in the crowd of 25,787 blew horns and whistles and banged drums to create a festive cacophony.
Puerto Rico's Giancarlo Alvarado took a shutout into the fifth. Granato singled with one out, and Nick Punto reached on catcher's interference by Molina. After Chris Denorfia singled to load the bases, Xavier Cedeno replaced Alvarado and gave up Rizzo's double.