Robertson attended Exeter High School before being drafted by the Astros in 1995. He spent the next seven years moving up the minor league system before making his debut in September 2002. His most productive year was 2003, where he won 15 games and finished seventh in Rookie of the Year voting. He was traded to the Indians the following year, where he played in eight games before being demoted to the minor leagues. Robertson spent the next few years playing in various minor league and independent baseball organizations, including the Mexican League and Chinese Professional Baseball League.

Robertson started his professional baseball career the following season, in 1996. He spent most of the season with the Gulf Coast League Astros, the rookie-class Astros franchise, where he played alongside future teammate Wade Miller. He also played one game with the Kissimmee Cobras. In 13 pitching appearances with the Astros, all of them starts, Robertson had a record of 5–3, a 1.72 ERA, and 98 strikeouts.[4] For the 1997 season, Robertson was promoted to the Quad Cities River Bandits of the Midwest League. In 26 games for the River Bandits, Robertson had a record of 10–7, 135 strikeouts, and an ERA of 4.07.[4]

The Astros promoted Robertson in 1998 to the class-A advanced affiliate Kissimmee Cobras of the Florida State League. In 28 games with the Cobras, Robertson pitched 175 total innings. He also had a 10–10 record, a 3.71 ERA, and 131 strikeouts.[4] He was again promoted the following year to the Jackson Generals of the Texas League. At one point during the season, he went six weeks without earning a victory.[5] He rebounded from the drought and finished the season with a 15–7 record and a 3.06 ERA;[4] his 15 wins led all pitchers in the league.[6] After the season ended, the Houston Astros purchased his contract, effectively placing him on the 40-man roster.[7]

Robertson did not play a game for the Astros during the 2000 season, and instead split his season between Kissimmee, the AAA-class New Orleans Zephyrs, and Jackson; the team was renamed to the Round Rock Express that season. He spent most of his time with the Express, where he was dubbed a "superprospect" during his time there.[6] He won 5 games and lost 10 in 25 combined pitching appearances between the three clubs that year.[4] Robertson spent the entire 2001 season with the Express; it was the only season of his professional career where he was used solely as a relief pitcher. In 57 appearances totaling just under 75 innings, he had a 5–1 record and a 3.91 ERA.[4] He was promoted to the Zephyrs for most of the 2002 season, and while he was told he would continue his relief work, he impressed management enough to move back into the starting rotation before the season began.[8] In 27 starts for the Zephyrs, Robertson had a 12–8 record, a league-leading 2.55 ERA, and 114 strikeouts en route to being named the Pacific Coast League Pitcher of the Year.[9] After the minor league season wrapped up at the end of August, the Astros purchased his contract and placed him on the major league roster.

Robertson made his MLB debut on September 2, 2002 against the Texas Rangers. He was starting in place of Roy Oswalt, who was serving a suspension for hitting a batter with a pitch.[10] He allowed two runs in 2⅔ innings and got the loss in his only start that year. He got his second decision in a 5–2 loss to the San Francisco Giants on September 28. In the game, the Giants clinched a playoff spot, and Barry Bonds hit a home run off Robertson into McCovey Cove to seal the game for them.[11] He finished the season with a 6.52 ERA in 9⅔ innings pitched.[3]

As the 2003 season began, Robertson was competing alongside Brad Lidge, Kirk Saarloos, and Pete Munro for the final spot in the Astros' starting rotation.[12] He pitched the entire month of spring training, and when the season began he was granted the final spot in the rotation.[13] Robertson made his season debut on April 3, and allowed eight earned runs in 4⅓ innings, losing the match against the Colorado Rockies 10–5.[14] He got his first career victory on April 10, allowing two hits in seven innings in a 4–2 victory against the Cincinnati Reds.[15] He struggled in his next three starts, and by the end of April Robertson had a 1–3 record and an ERA of 7.99, which caused manager Jimy Williams to consider moving him back to the bullpen.[16] After a May 2 matchup against the Atlanta Braves further increased his ERA, Robertson was demoted to the minor leagues, but only played with the Zephyrs for one game before being placed back on the major league roster ten days later.[17]

In a May 22 matchup against the St. Louis Cardinals, Robertson allowed one run and four hits in a 5–2 victory; after the game, catcher Gregg Zaun said that it was "absolutely the best he's thrown."[18] After the win against the Cardinals, Robertson won his next two starts, then he had three more matchups with a no-decision.[19] Robertson continued to win games over the following months, and on July 22, he won a match against the Pittsburgh Pirates, 2–0. In the game, Robertson allowed three hits in what was his ninth victory in a row without a loss, as well as his sixth victory in his past six starts for Houston.[20] His streak ended on July 27, as he only lasted 1⅔ innings in a 5–3 loss to the Chicago Cubs in what was at the time the shortest start of his major league career.[21] A month later, Robertson broke the team record for most victories by a left-handed rookie pitcher when he notched his 13th win against the Los Angeles Dodgers on September 2.[22] His last start of the season on September 26, however, was his worst; he only pitched a third of an inning, allowed three earned runs, and threw 7 of 18 pitches for strikes as the Milwaukee Brewers won, 12–5.[23] Robertson finished the 2003 season with 15 victories, 9 losses, a 5.10 ERA, and 99 strikeouts.[3] He also finished in seventh place for the Rookie of the Year Award.[24]

Robertson originally pitched for the Buffalo Bisons, the Indians' AAA-class affiliate in the minor leagues. He played with them for the first three months of the season, with the exception of one game on April 20 against the Kansas City Royals.[28] In 14 appearances with Buffalo, 12 of them starts, Robertson had a 4–5 record with a 7.27 ERA.[4] The Indians called Robertson up to the major league roster on June 25 after placing Rafael Betancourt on the disabled list.[29] In eight games for the Indians, Robertson had a record of 1–1 and a 12.21 ERA.[3] In his final appearance in the major leagues, a July 21 game against the Chicago White Sox, Robertson was ejected after hitting Magglio Ordóñez with a pitch in the fifth inning.[30]

After being demoted back to Buffalo, the Indians traded Robertson on August 3 to the Montreal Expos for Pierre-Luc Marceau.[3] He pitched in seven games for the Edmonton Trappers to end the season, finishing with a 1–3 record and a 5.73 ERA.[4] He was on the Expos' 40-man roster for September, but did not play a game for them, and in October he was removed from the roster. In November, the Cincinnati Reds signed him to a minor league contract with an invitation to spring training.[31] During spring training in 2005, Robertson competed with Aaron Harang, Brandon Claussen, Luke Hudson, and Josh Hancock for two spots in the Reds' rotation.[32] At the end of spring training, he was assigned to the Reds' minor league squad, the Louisville Bats. Robertson spent the season there, pitching in 28 games, 18 of them starts, and ended the year with a 5–11 record and a 5.46 ERA.[4] After the season ended, Robertson was released, becoming a free agent.

Robertson re-signed with the Newark Bears in 2007. For the season, he pitched in 14 games and went 5–5 with a 4.89 ERA.[4] At the end of June, the Bears sold Robertson's contract to the Rieleros de Aguascalientes of the Mexican League.[35] After a month there, in which he pitched four games, going 1–3 with a 5.54 ERA,[4] he returned to Newark to finish the season with the Bears, in what was his last professional baseball appearance.

Two years after leaving baseball, on May 29, 2010 Robertson died in Exeter, California after losing control of his motorcycle. According to the Visalia Times-Delta, Robertson was taking a turn on his motorcycle at an estimated 70 mph when he lost control of his bike.[24]