On May 18, 1997, the day I was born, one of the longest at-bats in MLB history occurred between Kansas City Royals’ left fielder Bip Roberts and Detroit Tigers’ pitcher Felipe Lira. Lira threw 18 pitches to Roberts, finally getting him to ground out. This at-bat is tied for the fifth longest at-bat in major league history. Exactly twenty-four years later, we saw another lengthy at-bat—this time a 13-pitch affair between Houston Astros’ ace Justin Verlander and Milwaukee Brewers’ catcher William Contreras in the fifth inning of a 1-1 game.
Over Justin Verlander’s career, he’s primarily relied on two pitches as his strikeout pitch: his four-seamer and his slider. Since 2008 (the earliest year data is available), there have only been five full major-league seasons where Verlander’s best strikeout pitch wasn’t his four-seam fastball—2023, 2022, 2019, 2011, and 2008. For those five years, his slider was his best strikeout pitch four times and his curveball was his best strikeout pitch once. Over the remaining nine seasons Verlander’s four-seam fastball has been his best strikeout pitch. Since 2008, Verlander has recorded 1,253 strikeouts on his four-seam fastball and 1,772 strikeouts on his other five pitches combined—a changeup, curveball, slider, cutter, and sinker. (Though in his past four full regular seasons, Verlander has ditched both the cutter and sinker, relying on just four pitches to maneuver through opposing lineups.)
Like most major league hitters, William Contreras loves to crush fastballs. During the past three seasons, Contreras has hit over .310 each year against the fastball. He’s shown he can drive this pitch out of the ballpark as currently 65% of his 52 career home runs have come against the fastball. While Contreras has also shown the past two seasons that he can handle breaking balls as well (he’s hitting .353 against breaking balls this year and hit .288 last year), opposing pitchers still challenge him with fastballs more than 50% of the time. He does most of his damage on mistakes pitchers throw right down the middle, as well as on the lower third of the strike zone; Contreras is hitting over .400 on the lower rail of the strike zone this season. His weakness at the plate appears to be on pitches that tail away from the low outside corner of the strike zone, as well as pitches that land up and in. He’s only hitting .250 on pitches that are up and in, and .087 on pitches that dart out of the strike zone low and away.
When William Contreras stepped up to the plate with two on and two out in the fifth inning, he hadn’t had success against Verlander that day, going 0-for-2 with a strikeout and a fly out to center field. Both previous at-bats lasted six pitches. The first at-bat Verlander started off Contreras with a curveball, a sign of respect for hitters that mash the fastball. Verlander missed with a fastball outside, and then got two quick strikes on fastballs on the upper rail of the strike zone. Verlander tried to elevate a fastball out of the strike zone with his fifth pitch of the at-bat, but Contreras didn’t bite, so it became a full count. For the knockout punch, Verlander threw his hardest fastball of the at-bat, a 95.1 mph fastball that Contreras couldn’t catch up to, and he struck out—Verlander’s second consecutive strikeout of the game.
When Contreras came to bat a second time, Verlander was in trouble, as there were runners on second and third with two out in a 0-0 ballgame. This time, Verlander didn’t start Contreras off with a breaking ball, but with a fastball near the heart of the plate that Contreras just missed, tipping it off his bat. Verlander then three consecutive balls—a curveball that bended out of the strike zone, a non-competitive fastball that was way too high, and a non-competitive slider that broke too low below the strike zone. Verlander changed Contreras’s eye level with the next pitch, throwing a 95.4 mph fastball on the top rail of the strike zone that Contreras fouled off; this made the count full once again. Finally, as in Contreras’s first at-bat, Verlander’s last pitch of the at-bat was his hardest pitch—a 96.8 mph fastball—that was just high enough out of the strike zone that Contreras couldn’t get under it enough to hit it out of the park. Contreras ended up flying out to center field 260 feet away for the final out of the third inning.
With the Astros leading 1-0 in the top of the fifth inning, Verlander immediately let the first three Brewers reach, allowing a single and two walks. He got the first out of the inning on a Blake Perkins sacrifice fly to left field, which tied the score at one apiece. Then, Verlander got Brice Turang to ground out to second base, which allowed both Brewers to advance a base. Now, with runners on second and third and two outs, William Contreras stepped up to the plate. What unfolded was an epic battle between a Hall of Fame pitcher and a rising offensive star in the league. Let’s look at the pitch sequence of this 13 pitch at-bat.
Pitch 1: 94 mph fastball. Result: Strike Looking. Count: 0-1.
Verlander had already thrown 29 pitches this inning when Contreras stepped up to the plate for a third time this game. Verlander had thrown 85 pitches in the game; he had been laboring to get to this point. This first pitch by Verlander was a beauty—a 94.8 mph fastball that just caught a piece of the outside part of the strike zone. There was nothing Contreras could do there but watch.
Pitch 2: 79 mph curveball. Result: Ball. Count: 1-1.
Verlander threw another beauty of a pitch—this time a curveball that just tailed out of the lower rail of the strike zone at the last moment. Contreras barely checked his swing; the home plate umpire appealed to the first base umpire, who ruled that Contreras didn’t swing at the pitch. The Brewers’ TV announcer claimed that this pitch was Verlander’s “best curveball of the day.”
Pitch 3: 95 mph four-seam fastball. Result: Foul ball. Count: 1-2.
Verlander went back to the outside part of the plate with another fastball, this time at 95.7 mph. This one was a bit more off the plate and higher than his first fastball of the day, but Contreras attacked the pitch, fouling it off the screen.
Pitch 4: 79 mph curveball. Result: Ball. Count: 2-2.
This time Verlander took his time getting settled to throw the pitch, firing off a curveball with just two seconds left on the pitch timer. This curveball curved just too far out of the strike zone that Contreras didn’t even offer at it this time.
Pitch 5: 82 mph curveball. Result: Ball. Count: 3-2.
Verlander followed this up with another curveball—his worst pitch of the at-bat so far. It completely fell off the plate and landed in the left-hand batter’s box. This was the definition of a non-competitive pitch.
Pitch 6: 79 mph curveball. Result: Foul ball. Count: 3-2.
This pitch—Verlander’s 35th of the inning and 91st of the game—began the streak of seven consecutive foul balls. Verlander got lucky here. He hung a curveball right down the middle of the plate. All Contreras could do with it though was ground it foul down the third-base line.
Pitch 7: 96 mph four-seam fastball. Result: Foul ball. Count: 3-2.
Verlander tried to blow Contreras away with a fastball after throwing three straight curveballs. Contreras was ready though and fouled the pitch away.
Pitch 8: 86 mph changeup. Result: Foul ball. Count: 3-2.
Verlander threw a bit of a wrinkle into the mix here with a changeup, the first of the at-bat. Contreras fouled it off down the third-base side.
Pitch 9: 96 mph four-seam fastball. Result: Foul ball. Count: 3-2.
For the fourth time in the at-bat, Verlander tried to beat Contreras on the outside part of the plate with a fastball. Contreras fouled it off again, staying alive in the at-bat.
Pitch 10: 96 mph four-seam fastball. Result: Foul ball. Count: 3-2.
Verlander fired a fastball in the top rail of the strike zone. Contreras got under it and fouled it straight back. If Verlander throws this pitch a couple inches higher, he might’ve induced a swing and miss. Alas, it’s another foul ball.
Pitch 11: 96 mph four-seam fastball. Result: Foul ball. Count: 3-2.
Verlander tried to beat Contreras again with a fastball here but it caught too much of the outside part of the plate and Contreras fouled it off into the seats.
Pitch 12: 96 mph four-seam fastball. Result: Foul ball. Count: 3-2.
This fastball was Verlander’s fastest pitch of the at-bat at 96.5 mph. If this pitch is just a couple of inches to the right, it’s right down the middle. Luckily for Verlander, this pitch stays on the outside portion of the strike zone, and all Contreras can do with it is foul it back.
Pitch 13: 95 mph four-seam fastball. Result: Three-run home run to left-center field. Score: Milwaukee 4, Houston 1.
Verlander’s previous four fastballs were all 96 mph or faster. This one only left his hand at 95.4 mph. He also placed this fastball at the top of the strike zone, but it was down just a bit so Contreras could meet up with it and deposit it way out into the left-center field seats. Verlander got Contreras to fly out to center on a similar pitch and location in his previous at-bat. He just got beat here by a great hitter.
Sixty feet and six inches is all that separates a pitcher from a batter. When the batter steps into the batter’s box and the pitcher steps onto the mound, the chess match begins. Ultimately, this matchup begins all the action we see on the field—the great defensive plays, the home runs, the stolen bases. Sometimes the battle ends quickly in one pitch. Other times, like in this case, the battle doesn’t end until the pitch count reaches double-digits. Regardless how long an at-bat lasts, the matchup between pitcher and batter always keeps us coming back to the stadium, wondering what will happen next.