Haeger attended Detroit Catholic Central High School in Redford, Michigan. He was named to the All-Catholic team as a senior in 2001 after going 7–2 with a 1.88 ERA and 101 strikeouts. He also hit.354 with 34 RBI. He was the winning pitcher in the State Championship game as a Sophomore.
He was selected by the Chicago White Sox in the 25th round of the 2001 Major League Baseball Draft and made his professional debut with the AZL White Sox. He briefly retired to pursue a career in golf following the 2002 season but returned in 2004. He made his major league debut May 10,, in a start against the Los Angeles Angels. He suffered the loss while allowing six runs on five hits in 4 innings. He appeared in seven games for the Sox, with a record of 1–1. He spent most of the season with the Charlotte Knights and was the starting pitcher in the International League All-Star game. On July 22,, White Sox pitcher Jon Garland started against Boston Red Sox knuckleball pitcher Tim Wakefield. Garland was relieved by Haeger in the 5th inning, marking the first time in recent years that two knuckleballers have faced each other in the same game. Wakefield won the decision on this game with an 8 to 5 Red Sox win.
San Diego Padres
On September 10, 2008, Haeger was claimed off waivers by the San Diego Padres. He made four appearances for the Padres and was non-tendered following the season, making him a free agent.
Los Angeles Dodgers
In January, he signed a minor league contract with the Los Angeles Dodgers. He was assigned to the AAA Albuquerque Isotopes and pitched well enough in the first half of the season to earn a spot on the Pacific Coast League All-Star team. The Dodgers called him up on August 12 and he made his team debut as the starting pitcher on August 17 against the St. Louis Cardinals. He appeared in six games for the Dodgers, 3 as a starter and finished 1–1 with a 3.32 ERA. Haeger began the 2010 season as the 5th starter in the Dodgers rotation. He accumulated a 0–4 record and an 8.40 ERA in 9 appearances, 6 starts and was designated for assignment on June 25, 2010. After clearing waivers, he was reassigned to Albuquerque. He made 10 starts for the Isotopes after his return, finishing 4–3 with a 5.70 ERA.
Haeger signed a minor league contract with the Seattle Mariners in November 2010 and given an invitation to Spring Training. He went 2–2 with a 7.74 ERA in 9 starts for the Tacoma Rainiers before he was released on July 15.
Boston Red Sox
On July 23, 2011, Haeger signed a minor league contract with the Boston Red Sox. He made 8 starts for the AA Portland Sea Dogs and was 4–1 with a 3.24 ERA. He underwent surgery and missed the entire 2012 season. He returned in 2013, going 8-8 in 25 starts in the minor leagues.