DETROIT -- Dixon Machado's bases-loaded single in the 12th inning lifted the Detroit Tigers to a 5-4 victory over the Kansas City Royals on Friday night.

The Royals took a 4-3 lead in the top of the 12th. Salvador Perez, who sent the game into extra innings with a two-out homer in the ninth, led off the inning with a single off Drew VerHagen (2-0), and Terrence Gore ran for him. He stole second on the second pitch and Jarrod Dyson bunted him to third.

Ben Zobrist was intentionally walked, but Paulo Orlando hit a chopper into the hole. Ian Kinsler made the play, but could only get Orlando as Gore scored the go-ahead run.

More from FoxSports

However, Anthony Gose led off the bottom of the 12th with a single off Greg Holland (3-2), and after Ian Kinsler popped out, Miguel Cabrera singled and took second when no one covered the bag as Gose went to third. Holland intentionally walked J.D. Martinez to face Victor Martinez with the bases loaded.

Holland got the strikeout he needed, but walked Tyler Collins to force in the tying run. Machado then lined a 2-2 slider down the left-field line for the winning run.

Justin Verlander allowed one run and four hits with a walk, and has posted a 2.02 ERA in his last 11 starts. In that stretch, he has walked 14 batters and struck out 69 in 80 1/3 innings.

Still, Tigers manager Brad Ausmus pulled him with a 3-1 lead and two out in the ninth after Eric Hosmer's single. Perez crushed Alex Wilson's second pitch for a game-tying homer.

Royals starter Johnny Cueto also got a no-decision, allowing two runs on eight hits and a walk in seven-plus innings. He gave up a first-inning run for the fourth straight start, but settled down for his best outing since allowing one run in eight innings against the Angels on Aug. 15.

The start of the game was delayed by 23 minutes because of a malfunctioning bank of lights in right field. It appeared that Verlander, who had already warmed up for the first inning, lobbied the umpires to start the game -- the field was still bathed in sunshine -- but he didn't get his wish.

The delay didn't seem to bother Verlander or Cueto once the game got going, as they hooked up in the kind of pitcher's duel that the Royals would have expected when they traded for Cueto.

The Tigers took a 1-0 lead in the first on Cabrera's double, but he was easily thrown out at the plate by Orlando on Victor Martinez's two-out single.

Orlando tied the game with a two-out double in the fifth, but Kinsler prevented a second run by making a sliding stop of Alcides Escobar's grounder, then threw Escobar out from his knees.

Cueto and Verlander dueled until the bottom of the eighth, when Gose led off with a double. That brought Wade Davis into the game, and after almost hitting Kinsler with his first pitch, he allowed a single on the second.

Cabrera then lined a sacrifice fly to right, bringing home Gose with the go-ahead run. Kinsler took third when Davis threw away a pickoff attempt, and J.D. Martinez drew a walk.

Victor Martinez followed with another sacrifice fly to right, making the first run Davis had allowed in over a month, ending a string of 13 scoreless outings that started on Aug. 18.

TRAINER'S ROOM

Royals: 2B Omar Infante left the game in the fifth inning with a left oblique strain and was replaced by Zobrist. Infante, who had 7 RBIs in Thursday night's win over Cleveland, will be evaluated tomorrow. . Alcides Escobar left the game before the bottom of the 10th inning with a left elbow contusion after being hit by a pitch in the top of the inning.

Tigers: 3B Nick Castellanos was out of the starting lineup for the second straight game with a groin strain, but pinch-hit in the 11th inning. . SS Jose Igleisas was undergoing tests on his broken finger to see if he will be cleared to play before the end of the season.

UP NEXT

The teams continue their three-game weekend series on Saturday night, with Edinson Volquez (13-8, 3.59) facing Detroit's Matt Boyd (1-5, 8.02). Boyd has an 8.50 ERA in his last four starts, once against Kansas City, having allowed 17 runs on 22 hits in 18 innings.