Staal was born in Thunder Bay, Ontario, the son of sod farmers Henry and Linda Staal. All four of his grandparents were Dutch immigrants. He started playing hockey at the age of four, and along with learning how to operate farming tools he played in a home ice rink with his three younger brothers. His idols growing up were forwards Joe Sakic and Wayne Gretzky. Eric took his jersey number 12 from what his father wore when he played hockey for the Lakehead Thunderwolves from 1978 to 1983.
Staal grew up playing minor hockey in Thunder Bay, and played AAA for the Thunder Bay Kings organization and led his Bantam team to an All-Ontario Championship in the 1999–2000 season. After the season, Staal was selected in the first round, 13th overall, in the 2000 Ontario Hockey League (OHL) Priority Selection by the Peterborough Petes. While not even Staal's father thought Eric was fit for the OHL, he finished his first season with 49 points in 63 games. In his sophomore season, Staal upped his total to 62, and in 2002–03, his last season before the NHL Entry Draft, he scored a career-best 98 points in 66 games.
Staal was selected second overall in the 2003 NHL Entry Draft by the Carolina Hurricanes, behind number one pick Marc-André Fleury. He played his first season in the NHL right after being drafted. In 2004, Staal played in the YoungStars Game as part of the 2004 NHL All-Star festivities.
As the 2004–05 season was cancelled due to a lock-out, Staal spent the year with the Hurricanes' American Hockey League (AHL) affiliate, the Lowell Lock Monsters. He established new franchise records in points (77), assists (51), plus-minus (+37) and shorthanded goals (7) in a season, and was also called for the AHL All Star Classic.
In the 2005–06 season, Staal scored a career-high 100 points during the regular season, and was named NHL Offensive Player of the Week of October 23–30, 2005, the same week in which he scored his first career hat-trick, coming against the Philadelphia Flyers. He then led the Hurricanes in points during the 2006 Stanley Cup playoffs with 28 as they won the Stanley Cup. After the season, Staal finished fourth in voting for the Hart Memorial Trophy, awarded to the NHL's most valuable player (MVP). Following the successful season, on July 1, 2006, Staal signed a three-year, $13.5 million contract extension with the Hurricanes.
Staal made his first All-Star Game appearance in 2007 All-Star Game in Dallas, where he scored the Eastern Conference's third goal. On January 27, 2008, at the 2008 NHL All-Star Game in Atlanta, Staal recorded two goals and an assist. He was also awarded the MVP award for the event.
On September 11, 2008, Staal signed a seven-year, $57.75 million extension with the Hurricanes, which was to begin in the 2009–10 season. Staal was slated to become a restricted free agent on July 1, 2009, but signed despite having one year at $5 million remaining on his former contract.
On April 28, 2009, Staal capped an improbable comeback by scoring the series-winning goal with 31.7 seconds remaining in the Game 7 of Carolina's first round series of the 2009 playoffs against the New Jersey Devils. The Hurricanes went as far as the Eastern Conference Finals, ultimately losing to the eventually Stanley Cup champions, the Pittsburgh Penguins.
On May 8, 2009, Staal scored twice to earn 40 career post-season points, eclipsing Ron Francis' franchise mark of 39.
On January 20, 2010, Staal was named team captain, replacing Rod Brind'Amour, who was named an alternate captain. Staal became the fifth captain since the team relocated to the city of Raleigh, North Carolina, from Hartford.
On January 18, 2011, Staal was named one of two team captains for 2011 NHL All-Star Game, held in the Hurricanes' home city of Raleigh. In the Game, Team Staal fell 10–11 to Team Lidstrom, captained by the Detroit Red Wings' Nicklas Lidström.
Staal is one of the most durable players in the NHL, having played in 690 of Carolina's 704 regular-season games (98%) since the beginning of his rookie year of 2003–04, and with just 14 games missed in nine seasons – 12 due to injury and two due to attending his sister-in-law's funeral.
On February 28, 2016, Staal, in the final year of his contract, was traded to the New York Rangers from the Carolina Hurricanes in exchange for Aleksi Saarela and two second-round draft picks (2016 (traded to Chicago Blackhawks) and 2017). Even though the trade was done primarily to send Staal to a Stanley Cup contender, the Rangers had a disappointing playoff run, losing in the first round to the Pittsburgh Penguins in a five-game series in which Staal registered zero points.
During the subsequent offseason, Staal as a free agent signed a three-year contract with the Minnesota Wild on July 1, 2016.
Staal received his first calls to Team Canada for the 2007 World Championships in Moscow. Along with younger brother Jordan, he won gold in a 4–2 win against Finland, scoring five goals, including the overtime winner in the quarter-finals over the Czech Republic. In the following year, Staal was back with Team Canada at the 2008 World Championships in Quebec City, winning a silver medal. He scored eight goals in the tournament, four of them in Canada's 10–1 defeat of Germany.
Four years after being named only for Canada's taxi squad for the 2006 Winter Olympics, Staal was selected for the Canadian team at the 2010 Winter Olympics in Vancouver. He became a starter alongside Sidney Crosby and Jarome Iginla, and scored one goal and five assists on the path to a gold medal. The Olympic title added with previous NHL and World Championship wins made Staal the 23rd player in the Triple Gold Club.
Staal was named captain of Team Canada in the 2013 World Championships in Stockholm. He would get injured in the first period of the quarter-finals, which Canada ended up losing to eventual champions Sweden, after a knee-on-knee hit by defenceman Alexander Edler.
Staal married his longtime girlfriend Tanya Van den Broeke on August 3, 2007. Their first child, a son named Parker Lucas Staal, was born on September 22, 2009. Their second child, son Levi John Staal, was born December 11, 2011, in Raleigh. Their third child, son Finley Arthur Staal was born December 15, 2014. Carolina Hurricanes' franchise record for most hat tricks in a single season – 4 (2008–09)
Carolina Hurricanes' franchise record for most career post-season points – 43
Carolina Hurricanes' franchise record for consecutive games – 349 (2004–2009)