Oswalt was selected by the Astros in the 1996 MLB draft. He made his major league debut with the club in 2001 and finished with a win–loss record of 14–3. He was back-to-back 20-game winner in both 2004 and 2005. He helped the Astros to their first World Series appearance in 2005. He was named Most Valuable Player of the 2005 National League Championship Series (NLCS). When he left the Astros in 2010 his wins (143) and strikeout total (1,593) was second in franchise history to Joe Niekro (144) and Nolan Ryan (1,866). He is a three-time All-Star, selected from 2005 to 2007. As of the 2012 season his career strikeout total was in the top 100 all-time.
As a member of Team USA, Oswalt won a gold medal in the 2000 Summer Olympics.
Oswalt was born and raised in Weir, Mississippi, the son of Billy Joe and Jean Oswalt. Billy was a Vietnam War veteran and logger. Roy grew up with his older brother, Brian, and their older sister, Patricia. Jean was an avid baseball fan and taught her kids about the game. Oswalt grew up rooting for the Atlanta Braves.
Oswalt joined the Weir High School football team as a quarterback and the baseball team as a pitcher. He could throw in the mid 80s with good control, but his relatively slight stature (5'10", 150 lbs.) scared away scouts. Oswalt reflected, "I always heard that I was too small." Weir itself was very small in size, making it difficult for scouts to hear about Oswalt. Nonetheless, he was recruited to join the baseball team at Holmes Community College.
Oswalt was spotted by only one major league scout, James Farrar of the Houston Astros. Convinced that Oswalt's anonymity kept him hidden from other teams, the Astros allowed him to drop into the 23rd round of the 1996 Major League Baseball draft. By this point, Oswalt had drawn the attention of the Mississippi State Bulldogs, for whom he had long wanted play. The Astros enticed Oswalt with a $500,000 signing bonus, and he signed with the club on May 18, 1997.
In 1997, Oswalt played rookie ball in the Gulf Coast League, where he gave up only two runs in five starts. He was then called up to the Auburn Doubledays of the New York–Penn League, where he went 2–4 the rest of the way.
He split 1998 between the same two teams. In 16 innings of work with the Gulf Coast Astros, he struck out 27 batters and walked just one. He was promoted again to Auburn, where he recorded the league's fourth-lowest ERA (2.18).
In 1999, when Oswalt was with the Class A Michigan Battle Cats in the Midwest League, he suffered an apparently serious shoulder injury. After a month of pain in his upper shoulder, Oswalt was convinced that his shoulder was torn. Shortly thereafter, he was checking the spark plug wires on his pickup truck. He touched one of the spark plug wires, causing the truck's engine to start. The truck's electric current flowed through Oswalt's body, and consequently the muscles in his hand tightened on the spark plug wire. Unable to let go of it, Oswalt grasped the wire for almost one minute. Oswalt then claimed his foot slipped off the truck's bumper and he was finally "thrown off." After the electric shock, Oswalt told his wife that his shoulder's condition improved and that he no longer felt any pain. According to Sports Illustrated, he reported it thus to his wife: "My truck done shocked the fire out of me, and my arm don't hurt no more." Apparently, the electric charge loosened accumulated scar tissue in the shoulder. Oswalt claims he has not felt any pain in his shoulder since the incident. He finished 1999 with 143 strikeouts and a club-high 13 wins.
Oswalt began 2000 with the Class A Kissimmee Cobras of the Florida State League, going 4–3 with a 2.98 ERA before a player injury on Class AA Round Rock Express of the Texas League led to his promotion. Oswalt was only expected to pitch a few games and had been given a round-trip ticket. But after striking out 15 batters in his first start with the Express, manager Jackie Moore tore up his ticket. Nolan Ryan, owner of the Express and Oswalt's idol, admired his calm demeanor and his aggressiveness so much that he successfully lobbied to keep Oswalt on the roster, where he would go 11–4 with a 1.94 ERA, and recording 141 strikeouts over 19 games (18 starts). It was here that he met pitching coach Mike Maddux, who counseled the young Oswalt to be economical in his pitch selection by throwing more breaking balls and inducing groundouts early in the count.
As a result of his success at Round Rock, Oswalt was selected to play on the U.S. Olympic baseball team at the 2000 Summer Olympics. In Olympic baseball competition, Oswalt pitched in the semi-finals against South Korea, a game that the U.S. won with a walk-off home run by Doug Mientkiewicz en route to their gold medal finish. Oswalt struck out ten and allowed two runs (1.38 ERA) in his two starts.
In 2001, Oswalt started the season with the Triple-A New Orleans Zephyrs, where he went 2–3 before being called up to the major leagues when left-hander Wayne Franklin was optioned down.
Oswalt finished his rookie campaign in 2001 with a 14–3 record and a 2.73 ERA, including a 12–2 mark with a 2.82 ERA in his 20 starts. He finished second in voting for National League Rookie of the Year, losing unanimously to Albert Pujols. He also placed fifth in Cy Young Award voting, which was won by Randy Johnson. He won the Sporting News NL Rookie Pitcher of the Year Award. He pitched 24 consecutive scoreless innings before giving up a home run to Andrés Galarraga of the San Francisco Giants.
The 2002 season was another step forward for Oswalt, who finished the season with a 19–9 record, striking out a career-high 208 batters and finishing with an ERA of 3.01. He tied with Éric Gagné for fourth in Cy Young voting, losing once again to Johnson. From July 27 to September 8, he won a then-club record 9 straight starts before getting a no-decision in an extra innings' Astros loss to the St. Louis Cardinals.
Injuries plagued Oswalt in 2003, but he still recorded a 10–5 record over 21 starts. He started a team no-hitter against the New York Yankees on June 11. Oswalt left after one inning, and 5 more Astros continued to no-hit the Yankees.
He rebounded in 2004 with the first 20-win season of his career, the only National League (NL) pitcher to do so that year. He went 20–10 despite a career-high 3.49 ERA, and struck out 206 batters. He finished third in Cy Young Award voting, behind his teammate Roger Clemens and, once again, Randy Johnson. He also made his first postseason appearance, going 1–0 with a 4.19 ERA in three starts and one relief appearance. He threw two complete-game shutouts during the season, both against the Milwaukee Brewers. He led all NL starters with the fastest average fastball, at 94.0 miles per hour (151.3 km/h). He won the Darryl Kile Award.
In 2005, Oswalt threw a career-high 241 2⁄3 innings, striking out 184 batters and only walking 48 on the way to his second consecutive 20-win season — the first Astro to do so since Joe Niekro in 1979–80. He notched a 20–12 record, including a career-best 10-game winning streak from April 10 to July 26, with a 2.94 ERA, and was named to his first Major League Baseball All-Star Game as the National League All-Star Final Vote winner. He was fourth in Cy Young Award balloting, won by Chris Carpenter. In the postseason that year, Oswalt started 4 games and went 3–0. His two seven inning one-run performances netted him the NLCS MVP award, including a three-hit seven strikeout game in Game 6.
Oswalt went 15–8 in 2006 and was named to his second consecutive All-Star team and his final ERA led NL (2.94), and also struck out 166 batters while walking 38. On August 29, 2006, Oswalt's 29th birthday, he signed a five-year extension with the Astros totaling $73 million with an option for a 6th year. He again finished fourth in Cy Young Award voting, won by Brandon Webb. On September 18, while pitching against the Cincinnati Reds, Oswalt recorded his 1,000th strikeout, becoming the eighth player in Astros history to reach the milestone.
Before the 2007 season, Roy Oswalt received the second-highest Pitcher Player Value Ranking from Sports Illustrated Baseball Preview Edition. He was rated the best in the NL ahead of Brandon Webb and Chris Carpenter, and was only below the 2006 Triple Crown winner Johan Santana. On July 5, 2007, it was announced Oswalt would replace an injured John Smoltz on the National League All-Star team, making it Oswalt's third consecutive All-Star game appearance. He did not pitch in the All-Star Game, however. On August 13, 2007, Sports Illustrated named Oswalt as one of the top five pitchers (along with Santana, Roy Halladay, Jake Peavy, and Justin Verlander). On September 26, 2007, it was reported that Oswalt was suffering from pain in his left side and it was decided to shut him down for the remainder of the season so as not to risk a more serious injury. He finished the 2007 season throwing 212 innings, his fourth consecutive year of 200 or more innings pitched, a 14–7 record, an ERA of 3.18 and 154 strikeouts.
Although he started off the 2008 season slowly (0–3, 9.00 ERA), a solid second half helped Oswalt reach his highest win total since 2005. Oswalt was able to accomplish this despite landing on the disabled list on July 19 for the first time since 2006. He also set an Astros team record with 32 1⁄3 scoreless innings. He finished the 2008 season throwing 208 2⁄3 innings, his fifth consecutive year of 200 or more innings pitched, a 17–10 record, an ERA of 3.54 and 165 strikeouts.
Oswalt is one of 10 major league pitchers who won at least 11 games in each year from 2004 to 2008.
In 2009, Oswalt played for the United States in the World Baseball Classic, appearing in two games. He was the winning pitcher in the contest versus the Netherlands, but was pulled from the semifinal against Japan in the fourth inning after giving up 6 runs.
On July 29, Oswalt was dealt to the Philadelphia Phillies for J. A. Happ and two minor league players, center fielder Anthony Gose, and shortstop Jonathan Villar, playing for Class-A Advanced and Class-A, respectively.
On August 24, Oswalt became the first Phillies pitcher to field in a non-pitching position in 39 years. In a game against the Astros, Phillies' first baseman Ryan Howard was ejected after arguing a checked swing to end the top of the 15th inning. Out of offensive reserves, the Phillies moved left fielder Raúl Ibañez to first base and sent Oswalt to play left field. Oswalt acquired one putout in the outfield, but later hit into the final out of the Phillies loss by grounding out in the bottom of the 16th inning. The previous Phillies pitcher to play a position was Bill Wilson, who played third base for one-third of an inning on August 6, 1971.
On September 12, Oswalt pitched his first complete game as a Phillie in a 3–0 win against the New York Mets, allowing four hits and striking out six.
In the 2010 NLDS, Oswalt pitched Game 2 of the Phillies' three-game sweep of the Cincinnati Reds; he gave up 4 runs in 5 innings, but the Phillies came back to win 7–4. In the 2010 NLCS against the San Francisco Giants, Oswalt won Game 2 by allowing only 1 run in 8 innings. Oswalt entered Game 4 in the bottom of the ninth inning, attempting to preserve a tie game, but took the loss. In Game 6, Oswalt allowed 2 runs in 6 innings but left with the game tied; the Giants later broke the tie to win that game and the series.
Going into the 2011 season, the Phillies' top four pitchers (Roy Halladay, Cliff Lee, Oswalt, and Cole Hamels) were widely touted as constituting one of the best starting rotations in history.
After a strong start to the 2011 season, Oswalt took a leave of absence from the Phillies on April 27, 2011, citing "personal reasons", namely to check on his family and home after a series of devastating tornadoes in Mississippi. He later spent several weeks on the disabled list due to a back injury. Overall, his season was considered to be disappointing, perhaps due to his back problems.
In the 2011 NLDS, Oswalt started Game 4 with the Phillies leading the St. Louis Cardinals 2 games to 1 and needing only one more win to advance. Oswalt allowed 5 runs in 6 innings and took the loss. The Phillies also lost Game 5 and were eliminated from the playoffs.
After the 2011 season for the Phillies, the team declined his option, thus making him a free agent.
Oswalt was regarded as one of the top starters on the free agent market and was courted by several teams. ESPN's Jayson Stark reported that Oswalt, only 34 years old and up to that point an elite pitcher, was holding out for the hope of a large salary from a team relatively close to his hometown of Weir, Mississippi. However, several of the teams on Oswalt's list were not interested, and Stark reported that Oswalt's performance in 2011 prevented other teams from offering the money he expected.
On May 29, it was reported that Oswalt had signed a minor league deal with the Texas Rangers.
To get back to form, Roy started four games in the Rangers' minor league system; three games for the Triple-A Round Rock Express and one for the Double-A Frisco RoughRiders. Throughout the four starts, he went 1–1 with a 5.87 ERA.
On June 20, the Rangers announced that Oswalt would make his first start with the major league club on Friday, June 22, a home game against the Colorado Rockies. In his debut with the Rangers, Oswalt pitched 6 2⁄3 innings. He collected 6 strikeouts, while surrendering 9 hits and one earned run. He received an ovation from the crowd as he exited.
On July 31, the Rangers moved Oswalt to the bullpen after the acquisition of Ryan Dempster.
On August 23, Oswalt made a spot start against the Tampa Bay Rays to give Matt Harrison an extra day of rest. However, he was removed after two innings with soreness in his elbow. On September 11, he was diagnosed with a right forearm strain and did not throw for several days. His first appearance since the injury was on September 24 in a game against the Oakland Athletics. He pitched two scoreless innings of relief. The next day, he pitched 1.1 innings.
Oswalt agreed to a minor league deal with the Colorado Rockies on May 2, 2013. He made his Rockies debut on June 20 against the Washington Nationals, pitching 5 innings and giving up 4 earned runs on 9 hits with 11 strikeouts.
Oswalt retired after the season and went to work for his former agent. Oswalt, along with former teammate Lance Berkman signed a one-day contract with Houston to officially retire as an Astro on April 5, 2014.
Oswalt threw the following five pitches:Four-seam fastball – His main pitch, 91–94 miles per hour (146–151 km/h)
Two-seam fastball – 90–93 miles per hour (145–150 km/h)
Curveball – 68–72 miles per hour (109–116 km/h)
Changeup – 81–84 miles per hour (130–135 km/h)
Slider – 83–85 miles per hour (134–137 km/h)
Oswalt's repertoire and approach evolved over time. His changeup was originally a rarely used circle change. However, in 2010, he changed the grip to make it more similar to a "fosh" grip. Originally a fastball-curveball pitcher, Oswalt made his changeup part of his standard repertoire. He threw it only 4% of the time in 2008, but that jumped to 19% by 2011. He says it also helped compensate for slightly reduced fastball velocity as a result of his age.
His curveball was a common 2-strike offering, and his changeup was frequently used in those counts to right-handed hitters. He also often used the change as a substitute for a fastball when he was behind in the count. He liked to work his fastball high in the strike zone: "It's often the best pitch for me to throw to a guy who is sitting on a fastball. If I throw it high, a lot of times he'll swing and not catch up to it."
Oswalt had good control throughout his career. He appeared in the top 10 in the National League in BB/9 rate seven times, as well as six times in strikeout-to-walk ratio. He also finished four seasons without making an error.
Oswalt was known as one of the faster workers in baseball in terms of time between pitches.
Oswalt is married, and has three daughters.
He is a hobbyist of deer hunting. He has won Weir's buck hunting contest multiple times, thanks in part to the 1,000-acre (400 ha) property he co-owns with his brother in nearby Kosciusko.