Di Vaio started his career at his hometown club Lazio. He made his Serie A debut on 20 November 1994 against Padova. He then played for Serie B clubs such as Verona and Bari before moving to Salernitana in 1997.

Despite Salernitana's relegation the following season, Di Vaio remained in Serie A, after being purchased by Parma. He scored an impressive number of goals for the Gialloblu and he went on to become the 2nd highest scorer of the league in his third season for the team.

Juventus won the race to sign him during the following summer (2002), by paying Parma €7million (€2million plus 50% registration rights of Brighi) for the loan.[2]

But Di Vaio never really reproduced the form he showed at Parma, mainly because of the immense competition for a first-team places at Juventus. Initially a loan signing, he was signed permanently in summer 2003 for €14 million.

Due to an early exit from the UEFA Champions League 2003–04 and coupled with the arrival of new coach Fabio Capello, Juventus began a restructuring of their first team squad. As a result, Di Vaio and his striking partner Fabrizio Miccoli were soon frozen out. Di Vaio moved to defending UEFA Cup and La Liga champions Valencia on a 5-year contract,[3] costing Valencia €10.5million,[4] joining up with fellow countrymen, coach Claudio Ranieri and new signing Bernardo Corradi. Di Vaio partnered Corradi up front in 10 La Liga matches, creating a total of 4 goals. He managed a mere eleven league goals during his spell in Spain.

His presence in the first team line-up of Valencia became restricted with the arrivals of Patrick Kluivert and David Villa, along with the sacking of Ranieri. New coach Quique Sánchez Flores preferred to use Miguel Ángel Angulo as Villa's strike partner or utilised a 4–5–1 formation, with Villa as the lone frontman. This restricted Di Vaio to only one league start during the 2005–06 season.

In January 2006, Di Vaio was loaned out to Ligue 1 side AS Monaco with an option to make the deal permanent.[5] Along with Di Vaio, countryman Christian Vieri was also signed and partnered him for 7 French league matches, yielding 3 goals all of which were scored by Vieri. Initially an insurance signing for injured Javier Chevantón and to replace the departing Emmanuel Adebayor, the Italian duo created opportunities for Chevantón to score goals in the second half of the season.

In his second season Di Vaio became the 3rd choice striker behind new signings Jan Koller and Jérémy Menez, restricting him to just six first team appearances.

On 22 January 2007, after an unsuccessful spell in Ligue 1, Di Vaio surprisingly returned to Italy by signing with Serie B club Genoa,[6] a side strongly pushing for promotion, for €1.8 million.[7] The club duly achieved promotion, but once in Serie A, the partnership of Marco Borriello and Giuseppe Sculli was preferred, leaving Di Vaio to make only 9 appearances.

On 21 August 2008 it was confirmed that Di Vaio had signed for Serie A side Bologna FC,[8] recently promoted from Serie B. This reunited with former Genoa team-mate Adaílton. Di Vaio was a surprise star in the 2008–09 season, scoring an impressive 24 goals for a mediocre Bologna side. He finished the season as joint second top-scorer alongside Genoa C.F.C. striker Diego Milito. At the end of season Bologna signed him on free transfer.[7]

In his period at Bologna, Di Vaio regained reputation as a key prolific striker, rapidly becoming a fan favourite, as well as team captain and one of the reference players during the two club takeovers in the 2010–11 season, ensuring himself a contract extension until June 2013; following the announcement, Di Vaio also state his desire to spend the rest of his footballing career as a Bologna player.[9] However, on 4 May 2012, Di Vaio confirmed that the 2011–12 season will be his last with Bologna, and that he would be considering various options for his future.[10]

After lengthy negotiations, Montreal Impact announced that Marco Di Vaio had signed as the Canadian club's first Designated Player.[11] Di Vaio made his Impact debut on 27 June 2012 against Toronto FC, and scored his first goal a month later on 28 July 2012 against New York Red Bulls. Marco scored his first goal of the 2014 season against Philadelphia Union on 29 March 2014. On 25 October 2014, in his last game as a professional, Di Vaio scored the opening goal in a 1–1 draw at home to D.C. United.[12] Di Vaio retired following the 2014 season.

Di Vaio made his senior International debut for Italy under manager Giovanni Trapattoni, on 5 September 2001, in a friendly match in Piacenza against Morocco, which ended in a 1–0 home victory to Italy. He scored his first goal for Italy on 11 October 2003, in Reggio Calabria, in a 4–0 home win over Azerbaijan in a UEFA Euro 2004 qualifying match. Di Vaio played for Italy at Euro 2004 under Giovanni Trapattoni, appearing in Italy's final group match, which ended in a 2–1 victory over Bulgaria, although Italy were still eliminated in the first round of the competition. Di Vaio later received several call-ups from Marcello Lippi who had previously coached Di Vaio at Juventus. However, a loss of form whilst with Valencia, coupled with the emergence of Luca Toni and Alberto Gilardino, led to Di Vaio losing his place with the national team. He made his final appearance for Italy with Lippi on 9 October 2004, in a 1–0 away loss to Slovenia, in a 2006 World Cup Qualifying match. In total, Di Vaio appeared 14 times with the national side, scoring two goals.

A prolific goalscorer, Di Vaio was a quick, opportunistic, and versatile player, who was capable of playing anywhere along the front-line, as a striker, or even as a winger, due to his solid technique and distribution. His preferred role, however, was that of a centre-forward, where he could take advantage of his goalscoring ability in the area and skill in the air. He also had a powerful and accurate shot from distance, and was an accurate penalty taker.[14]