The tournament has four groups, with nine teams in Groups A and B, and ten teams in Group C. All the new teams were placed in the Plate Group.[6][7] The top two teams from Group C and the top team in the Plate Group progressed to the quarter-finals of the tournament, along with five best-ranked teams across Groups A and B.[6][7]
In the Group C fixture between Rajasthan and Jharkhand, Jharkhand's Shahbaz Nadeem set a new List A cricket record, taking eight wickets for ten runs from ten overs.[8][9] In the Plate Group fixture between Bihar and Sikkim, Sikkim were bowled out for 46 runs, with Bihar winning by 292 runs, the biggest margin of defeat by runs in Indian domestic cricket.[10] In the Plate Group fixture between Uttarakhand and Sikkim, Uttarakhand's Karn Kaushal made the first double-century in the history of the Vijay Hazare Trophy, scoring 202 runs.[11]
Mumbai and Maharashtra from Group A, Delhi, Andhra and Hyderabad from Group B and Bihar from the Plate Group all qualified for the quarter-finals of the competition.[12] They were joined with Haryana and Jharkhand from Group C.[13] The draw for the quarter-finals took place on 11 October 2018.[14]
In the first quarter-final match, between Bihar and Mumbai, Bihar were bowled out for 69 runs, with Mumbai going on to win by nine wickets.[15] In the second match, Delhi beat Haryana by five wickets,[16] with Delhi's Gautam Gambhir scoring his 10,000th run in List A cricket.[17] In the third fixture, Jharkhand beat Maharashtra by two wickets in a rain-affected match.[18] In the fourth and final quarter-final match, Hyderabad beat Andhra by 14 runs to progress.[19]
The first semi-final was also a rain-affected match, with Mumbai beating Hyderabad by 60 runs via the VJD method.[20] In the second semi-final, Delhi beat Jharkhand by two wickets to join Mumbai in the final.[21] Mumbai won the final, beating Delhi by four wickets.[22] Afterwards Mumbai's captain, Shreyas Iyer, said that "we are a perfect team, and that is why we have won".[23]