The win, the first for the Royals over Detroit at Kaufmann Stadium this year, prevents a four-game sweep and puts them 6 1/2 games back of the lead in the American League Central. Kansas City (48-46) sits eight games ahead of their 2013 pace.
Bruce Chen allowed two runs on eight hits over the first 5 1/3 innings in place of an injured Jason Vargas. Ventura (7-7) allowed just one hit while striking out three batters in only 1 2/3 innings.
Miguel Cabrera's sacrifice fly and J.D. Martinez routine fly that dropped into shallow left field plated runs in the third, giving the Tigers (53-38) a 2-0 lead.
Justin Verlander (8-8) kept Kansas City off the board until Alcides Escobar began the rally with a run-scoring infield single in the seventh. Verlander was pulled after recording one out in the inning, allowing four runs and six total hits.
Jarrod Dyson grounded into a fielder's choice to tie it 2-2, while Omar Infante plated a pair with a single to put the Royals on top. Eric Hosmer also recorded an RBI.
Salvador Perez and Greg Holland will represent the Royals in their second straight Major League Baseball All-Star Game on Tuesday, while Alex Gordon will not take part due to injury.
Copyright 2016 Nexstar Broadcasting, Inc. All rights reserved. This material may not be published, broadcast, rewritten, or redistributed.