A debatable penalty and Rivera's second half double sees Juan Chavez's squad advance from the quarterfinals, despite a horror moment from keeper Jose Rodriguez.
Substitute Edson Rivera's second-half double sealed the win for the Concacaf side, who will now face the winner of the Brazil - Spain matchup in the last four.
Behind their raucous fans, it was perhaps no surprise that the South Americans had the better of the opening exchanges. Luis Muriel thrice went close in the first-half, while Juan Cabezas also had an effort saved by Mexican keeper Jose Rodriguez.
However, against the run of play, Mexico took the lead through a contentious penalty in the 38th minute. Diego Rosales’ gentle tumble after a push in the back was enough to convince referee Cuneyt Cakr of an infringement, and Erick Torres stepped up to confidently drive the ball into the bottom-right corner.
Despite a tepid start to the second-half, Colombia drew level on the hour mark after an embarrassing mistake by Rodriguez in the Mexico goal. Duvan Zapata let fly with a low drive from 30 yards out which appeared to be routine for the Guadalajara keeper, but the ball somehow slipped out of his hands, through his legs and into the back of the net.
However, Mexico was not daunted by the setback and regained the lead 10 minutes later with a goal by substitute Edson Rivera, who added a second with two minutes remaining.
Mexico now awaits either Brazil or Spain in the semi-finals on August 17 in Pereira.