Luciano Spalletti's men appeared to kick-start their campaign with a 3-0 win at Bologna before the international break, but they were wasteful in front of goal and ultimately paid the price.
The absence of Mauro Icardi – who could only make the bench due to a recent thigh injury – seemed to be particularly felt in the first half, when Inter crafted several chances but failed to take any.
Parma became more defensively minded after half-time and Inter struggled to break them down, before getting caught out late on.
Dimarco, who previously denied Ivan Perisic a certain goal, struck from long range 11 minutes from time and secured Parma a first win over Inter at San Siro since 1999.
Inter had little trouble establishing control in the first half and they should have gone ahead through Perisic in the 16th minute, but the Croatian blasted over after meeting Antonio Candreva's cross at the back post.
Keita Balde Diao wasted an even better opportunity for a dominant Inter 15 minutes later, receiving Dalbert's cut-back and shooting straight at Luigi Sepe.
Icardi replaced Keita at the break, but still Perisic looked Inter's biggest threat – Dimarco denying him with a vital block in front of goal in the 56th minute.
Inter piled men forward towards the end and Roberto Inglese almost put a Perisic cross into his own goal, but luckily it bobbled just wide.
Parma then took full advantage of that let-off in the 79th minute, as Dimarco lashed a glorious effort into the top-right corner from 35 yards and Inter were unable to claw things back, sending them into their Champions League opener with Tottenham with just one win in four league games.
What it means: Parma off the mark
After a difficult few years, it is an historic day for Parma. The club had to start again in the lower echelons of Italian football following bankruptcy, but after fighting their way up the divisions, they are back and upsetting the giants.
Victory also ends a run of two successive Serie A losses for Parma, who will surely be breathing a sigh of relief after withstanding intense pressure in San Siro.
Pat on the back: Sensational Sepe
While Dimarco's goal will take the headlines, Sepe's performance in goal was essential to this win. Although Inter's finishing was not great, Parma's goalkeeper had to be alert throughout and made several crucial stops.
Boot up the backside: Ineffective Keita
Before kick-off, Inter sporting director Piero Ausilio said Keita was signed to play with or in place of Icardi, and while he is undoubtedly talented, he looked awkward leading the line on Saturday, seemingly unsure of where to run or to position himself. He was unsurprisingly hooked at half-time.
Key Opta stats:
28 - 28 shots for Inter today: the last time the Nerazzurri had fired so many shots in a single Serie A match without scoring was back in February 2012 (30 vs Novara). Target.— OptaPaolo (@OptaPaolo) September 15, 2018
- Inter have earned only four points so far – their worst start after four games played since 2011/12.
- This is Parma’s first Serie A win since April 2015 (1-0 against Palermo).
- Specifically, Parma have won a league away game for the first time since September 2014 (3-2 win against Chievo).
- Inter have fired eight shots on target today (out of 28), one less than Parma have in total (five on target).
- For the first time since January 2016 Mauro Icardi has played a Serie A game as a substitute.
- Icardi has failed to score in each of his first three Serie A seasonal appearances for the first time since 2012/13 (his debut campaign).
- Federico Dimarco scored his first Serie A goal in his 15th appearance (his second with Parma).
A busy week beckons for Inter, as they get their Champions League campaign started at home to Tottenham on Tuesday, before then travelling to Sampdoria in Serie A four days later. Parma, on the other hand, host Cagliari next time out.