In 1982, aged 23, he became a coach for amateur team Abbiategrasso's youth squad, and 1984 for Monza's. He was also a successful School Teacher in the mid eighties for Istituto Gonzaga and Istituto Leopardi in Milan. His first team role came in 1994 for amateur side Corsico, whereas his first professional appearance came the next year for Pro Patria, followed by Saronno, Como and Lumezzane.
After three successful seasons with Varese of Serie C1, Beretta was signed by Ternana of Serie B. An exciting debut in 2002–2003 was followed by a sacking the next season. In 2004–2005, Serie A club Chievo Verona called him to replace Luigi Delneri. Despite a strong starting, Beretta's Chievo slowly but continuously fell down the table, and he was fired three matchdays to the end of the season, with Chievo fully involved in a tough relegation battle, to be replaced by caretaker Maurizio D'Angelo.
In 2005–2006 he coached successfully Parma, ending in tenth place, then turned out to be seventh following the 2006 Serie A scandal which consequently led Parma to a UEFA Cup qualifying. Then he coached Siena for the 2006–2007 season, but he suffered in the relegation fight until the last matchday. Siena kept its place in Serie A after a dramatic win over S.S. Lazio. Some days later he agreed to leave the club, being replaced by Andrea Mandorlini; however he was reappointed at the helm of the Tuscan side after Mandorlini was sacked on November 12, 2007 following a 2–3 home loss to Livorno.
On May 18, 2008, after Siena's 2–2 draw against Palermo in the final matchday, Beretta said in his press conference that he was quitting Siena. This was confirmed by the club a few days later; he left Siena after a very impressive season ended with a record 44 points, the best result in Robur's time in the Italian top flight. He was successively announced on June 23 as new head coach of Lecce, newly promoted in the 2008–09 Serie A. He was sacked on March 9, after a 0–0 home draw against bottom-placed Reggina in the Week 27 of Serie A that left Lecce in second-last place.
In June 2010, Beretta signed a two-year contract with Greek side Paok Salonicco, with this being his first experience outside his homeland. However on July 22, 2010, just a month after his appointment at the helm of the squad, Paok chairman Thodoris Zagorakis decided to sack him due to poor pre-season results and rumoured complaints from some players. Mario Beretta was immediately replaced by Pavlos Dermitzakis.
On 6 December 2010 Beretta was announced as new head coach of Serie A relegation-threatened Lombardians Brescia, replacing Giuseppe Iachini at the helm of the Rondinelle. His tenure as Brescia boss lasted less than two months, as he was dismissed on 30 January 2011 after a 0–3 home loss to relegation-battling rivals Chievo.
Since 21 February 2012 to the end of the season he has been the coach of Cesena in Serie A.
Beretta has publicly confirmed his interest in taking over the vacant Head Coach role of the Singapore national football team.