Hernández (as Carmona) was signed as an amateur free agent by the Cleveland Indians on December 28, 2000. In 2003, he compiled a record of 17-4 with a 2.06 ERA in 24 starts for the Class-A Lake County Captains. This led to him being honored as the Most Outstanding Player of the South Atlantic League, receiving All-Star honors both from the South Atlantic League and for all of Class-A and he was named the Indians' 2003 Minor League Player of the Year (receiving the "Lou Boudreau Award"). He split 2004 between the Kinston Indians of the Carolina League and the Akron Aeros of the AA Eastern League. Combined, he was 10–10 with a 4.09 ERA in 28 starts.
The following year, 2005, he split between the Aeros and the AAA Buffalo Bisons of the International League. He was 13–9 with a 3.68 ERA in 26 starts.
On April 15, 2006, Hernández made his MLB debut when he started the game against the Detroit Tigers at Comerica Park. He pitched 6 innings giving up one earned run and striking out four. He earned the win, which was his only win of the season.
On July 20, 2006, the Indians traded closer Bob Wickman to the Atlanta Braves, and the Indians chose Hernández to fill the role. In the span of seven days (from July 30 through August 5), Hernández recorded four losses and three blown saves for the Indians, including walk-off home runs surrendered to Boston's David Ortiz and Detroit's Iván Rodríguez. Hernández lost the closer's role to Tom Mastny soon thereafter.
After the closer experiment, Hernández was demoted to the Buffalo Bisons, the Indians' Class Triple-A affiliate, where he was placed back in a starter's role. He was promoted to Cleveland again in September, and finished the season as a starter. Hernández ended the 2006 season with a record of 1–10 and a 5.42 ERA.
In 2007, Hernández was originally slated to be the Indians' spot starter and to start the season at the team's minor league affiliate, Triple-A Buffalo. However, after Cliff Lee went down with an abdominal strain in spring training that would force him to miss at least the first three weeks of the season, the Indians gave Hernández the opportunity to start in Lee's place. In his first start of the season on April 13, the Chicago White Sox battered him for six earned runs in 4 1⁄3 innings.
Hernández quickly rebounded, holding the New York Yankees' potent offense to just 2 ER in 6 IP in his next start. He received a no decision, however, when Joe Borowski allowed six runs in the ninth inning to give the Yankees the win. Hernández settled into a groove and won his next five starts, allowing just 5 ER over 39 IP. In the streak, Hernández beat two-time American League Cy Young Award winner Johan Santana of the Minnesota Twins twice and in one of his starts against the Twins, center fielder Torii Hunter was quoted saying, "I can't wait until we face normal pitchers. This guy's sinker is practically unhittable." The first victory came on April 24 in Minnesota, when Hernández allowed just 2 ER over 7 2⁄3 IP. The second win came at home on May 17, when Hernández tossed his first career complete game shutout, scattering just four hits along the way.
On July 25, Hernández tossed eight shutout innings against the Boston Red Sox in a 1–0 Indians win. The victory capped a 5–0 July for Hernández. Hernández went on to go 19–8 with a 3.06 ERA and 215 innings pitched for the 2007 season.
Hernández received serious consideration for the AL Cy Young award, along with teammate CC Sabathia, Boston's Josh Beckett and the Angels' John Lackey. True to his dominant 2007 regular season form, Hernández, in his 1st career postseason game in Game 2 of the 2007 ALDS against the Yankees and Andy Pettitte, allowed 1 earned run on 3 hits over 9 innings in an extra-inning win for Cleveland. He finished fourth in the 2007 Cy Young vote.
On October 20, Hernández was battered by the Red Sox in Game 6 of the 2007 ALCS, surrendering seven runs in two plus innings. The big blow was J.D. Drew's first inning, two out Grand Slam to center field. He was knocked out of the game in the third inning of the Indians' 12–2 loss to the Sox at Fenway Park.
On April 10, 2008, the Indians signed Hernández to a four-year $15 million contract extension through 2011 with three individual club options through 2014. If all options had been exercised, Hernández would have made $43 million, with another $5 million available in escalators.
Hernández started the 2008 season off strong before going down on May 24 with a left hip strain after running to cover first base. He stayed on the disabled list for 2 months before making his return to the starting rotation on July 26.
On September 19 against Detroit, Hernández hit Gary Sheffield with a pitch. The two exchanged words as Sheffield walked to first base with his bat tucked under this arm. Before the next pitch, Hernández made a pick-off throw to first base. Sheffield again started exchanging words with Hernández, and this time charged the mound inducing a bench-clearing brawl. Hernández was seen landing several punches to Sheffield's head, which left him bloodied. Hernández and Sheffield were both ejected, along with Indians catcher Víctor Martínez and Tigers second baseman Plácido Polanco.
Hernández had a subpar season, starting 24 games for Cleveland, going 5–12 with 6.32 ERA. He struck out 79 batters in 125.1 innings. The Indians finished the year 4th in the AL Central with 65–97 record. Hernández improved dramatically from 2009 and was honored with his 1st All Star selection. He had a 13–14 record with a 3.77 ERA, while striking out 124 batters in 210.1 innings.
On February 28, 2011, Indians Manager Manny Acta announced that Hernández had been selected as his starter for Cleveland's season opener against the Chicago White Sox. The April 1 start would be his first on opening day.
In front of a sellout crowd of 41,721 fans at Cleveland's ballpark Progressive Field, Hernández started the 2011 season for the Indians. Hernández posted the worst opening day start in Major League history, as he became the first starting pitcher to allow 10 runs in a team's first game. Hernández was the losing pitcher as he threw 88 pitches over 3.0 innings, allowed 11 hits, surrendered 2 home runs, walked 1, had 10 earned runs and left the game with an earned run average of 30.00. When pulled from the game, he was booed by fans. In that game, he became the first starting pitcher to allow 10 runs in a team's first game in over 60 years. The last pitcher to allow 10-plus runs in an opener was Early Wynn of the Washington Senators who accomplished the feat on April 19, 1948. In that game Wynn surrendered 12 runs but managed to pitch 8 1⁄3 innings.
On July 16, Hernández was granted a visa to work in the U.S. On July 21, he began serving a 3-week suspension delivered by the MLB for age and identity fraud. While he served the suspension, Hernandez was allowed to pitch simulated games and in the minors. He rejoined the Indians on August 11. He started his first game since 2011 on August 15 against the Los Angeles Angels of Anaheim. He ended the season with a 7.53 ERA in 14 1⁄3 innings.
Hernández was signed by the Tampa Bay Rays on December 18, 2012 to a 1-year contract. He was named their number 5 starter before the season. He recorded his first career win under his real name on April 21. On July 30, 2013 Hernandez recorded his first complete game with the Rays, a 5-2 defeat of the Arizona Diamondbacks.
The Philadelphia Phillies signed Hernández for the 2014 season for $4.5 million. After five starts, during which he compiled a 5.81 ERA, he was available to pitch out of the bullpen, as off days meant the Phillies would not need him for over a week. Around that time, Phillies analyst Ricky Bottalico commented, "All in all, I like what I've seen from Roberto Hernandez early in the ball games, but it's seems to be fourth, fifth, sixth innings, you're seeing a laboring guy out there. The one thing he's got to do is relax himself. It seems like he's trying to be a little too fine with his pitches. When you do that as a pitcher and you're not relaxed, you're going to make mistakes ... one thing he can do is take a deep breath. Getting deeper into games is getting tougher and tougher for him." Subsequently, he rebounded, and had totaled 23 appearances (20 starts) with the Phillies, during which he posted an ERA of 3.87.
On August 7, 2014, Hernández was traded to the Los Angeles Dodgers for either two players to be named later or cash considerations (the players turned out to be minor leaguers Jesmuel Valentín and Víctor Arano). He made his first start as a Dodger the following day, allowing two runs in six innings against the Milwaukee Brewers. Hernández started nine games for the Dodgers, with a 2–3 record and 4.74 ERA.
Hernández signed a minor league contract with the Houston Astros in February 2015. He was designated for assignment on July 29, 2015 to create room for Jed Lowrie who was activated from the disabled list. He was released on August 9.
Hernández signed a minor league contract with the Toronto Blue Jays on December 18, 2015, that included an invitation to spring training and a March 28 opt-out. He exercised his March 28 opt-out after learning he would not make the Opening Day roster. Had he made the team out of spring training, the contract would have paid Hernández $1.25 million for the 2016 season. He signed another minor league contract with the Jays on April 20, and was to report to extended spring training. Hernández was assigned to the Triple-A Buffalo Bisons on April 27, and released on July 3.
On July 15, 2016, Hernández signed a minor league contract with the Atlanta Braves. He was added to the Braves roster in August, and designated for assignment on August 12 after making two starts.
Hernández is known for his hard sinker and exhibiting good control of his pitches. He did not throw exceptionally hard when he debuted in the minor leagues at age 21, but has since developed a fastball that can reach 97 mph. He also throws a slider and a changeup, but relies mostly on his hard sinker to get many ground ball outs.
In January 2012, Dominican police arrested Hernández after he left the U.S. Consulate, accusing him of using a false identity to obtain a visa. Police reported his real name as Roberto Heredia Hernández, and that he is three years older than he reported. The Indians placed Hernández on the restricted list. Officials in both countries received assistance in the case by a woman in the Dominican Republic who claimed she falsified a birth certificate for Hernández in exchange for $26,000, but when Hernandez's father failed to pay her, she contacted the authorities. Hernandez has stated that Fausto Carmona was his grandfather.