McNamara attended Christian Brothers High School and Sacramento City College, where he led the team to the 1951 California state championship (and later was inducted to the SCC Athletic Hall of Fame). A right-handed batter and thrower, he was a peripatetic minor league catcher during his playing career, originally signing with the St. Louis Cardinals organization. He began his managing career with the Lewis-Clark Broncs in Lewiston, Idaho, of the Northwest League in 1959, and when the club became an affiliate of the Kansas City Athletics in 1960, McNamara joined the A's system. He won Southern League pennants in 1966 and 1967 and groomed many future members of the Oakland dynasty during his tenure at the Double-A level.
McNamara managed the Oakland Athletics (1969–70), San Diego Padres (1974 through the midseason of 1977), Cincinnati Reds (1979 through the midseason of 1982), California Angels (1983–84 and part of 1996), Red Sox (1985 through the midseason of 1988), and Cleveland Indians (1990 through the midseason of 1991).
Over all or parts of 19 seasons, he had a managing record of 1,167–1,242 (.484). His 1979 Cincinnati team, defeated by the Pittsburgh Pirates in the NLCS, was his only other postseason entry. Although McNamara's 1981 Reds compiled the best overall record in the National League West (66–42, .611), the split-season format adopted because of the 1981 Major League Baseball strike denied Cincinnati a place in the playoffs because the Reds finished second (to the Los Angeles Dodgers, then to the Houston Astros) in each half-season.
McNamara served as a major league coach for Oakland (1968–69), the San Francisco Giants (1971–73), and the Angels (1978). He also has worked as a catching instructor with the Angels.
McNamara's managerial tactics during the 1986 World Series (especially in the last two games) received much criticism and scrutiny. In the pivotal sixth game, McNamara removed Red Sox ace Roger Clemens in the eighth inning despite the fact that Clemens was still pitching well. Both parties have different stories regarding Clemens's departure. According to Clemens, he did not want to leave the game, but McNamara insisted that Clemens asked to be taken out because he had a blister on his pitching hand. McNamara was also criticized for pinch-hitting Clemens with rookie Mike Greenwell, who struck out on three pitches, when veteran slugger Don Baylor was also available. McNamara's move was further questioned in light of the relatively poor performances of closer Calvin Schiraldi and longtime reliever Bob Stanley, especially considering that he brought Schiraldi into the game for what was supposed to be a two-inning save and left him in the game for the first two outs of the tenth after he blew the save.
Yet, perhaps the decision that McNamara will be most remembered for is his leaving first baseman Bill Buckner in the game in the 10th inning rather than removing him for a defensive substitute. McNamara was ridiculed for years afterward for leaving Buckner on the field instead of replacing him with Dave Stapleton, who had previously been used to replace Buckner in late innings for defensive purposes (including Games 1 and 5 of the World Series). He later said, "I felt Buckner deserved to be on the field when we won." The Red Sox players also believed that their manager let sentiment overpower his judgement. Stapleton claimed that "[McNamara] damn well knows that he messed up. And he very well could have cost us the World Series that year." McNamara finally responded to Stapleton's attack in 2011 during an interview with Bob Costas for MLB Network, reneging on his original claim that sentiment was what caused him to keep Buckner in the game and saying that Stapleton had the nickname of "Shaky" because of his poor defense.
With Game 7 delayed a day due to rain in New York, McNamara bumped originally-scheduled starting pitcher Oil Can Boyd in favor of starting Bruce Hurst, the winner of Games 1 and 5 and the presumptive MVP of the series if the Red Sox were to win, on three days' rest; the Red Sox had chosen to go with a normal four-man rotation during the series, unlike the Mets who pitched a three-man rotation. The decision upset Boyd so much that he began drinking heavily afterward and drank himself to the point of intoxication, according to accounts given by McNamara and his pitching coach Bill Fischer, thus rendering him unavailable.
Hurst was staked to a 3-0 lead and pitched shutout ball for five innings, but tired in the sixth allowing the Mets to score three runs to tie the game. Since Boyd's actions had left the bullpen shortstaffed in a situation where every pitcher able would need to be available in case of an emergency, McNamara decided to bring Calvin Schiraldi in despite his struggles in Game 6 and the fact that he was still tired from pitching 2.2 innings that night (something he wasn't used to). Schiraldi gave up a tie-breaking home run to Ray Knight, the first batter he faced, and ended up surrendering three runs while recording only a single out. The Red Sox would lose the game 8-5, thus losing the series.