The Slovakian, who in January 2019 dealt Shiffrin her last slalom defeat in Flachau, Austria, once again bettered her American rival thanks to some help from a good starting draw.
Vlhova drew bib number 1 on the slopes of Crveni Spust near Zagreb, Croatia, and made the most of pristine course conditions to open up a big lead on all her opponents in the first run which she did not give up on the second leg.
A win for Shiffrin would have been her 44th career slalom win, breaking Lindsey Vonn's record for most World Cup wins in a single discipline by a woman, but the 25-year-old will now have to wait at least another week and a half, with the next slalom race in Flachau on 14 January.
For clinching victory in the Croatian capital, Vlhova received a customary "Snow Queen" crystal crown trophy from the organisers. It was her first win in Zagreb after two consecutive second places at the venue, and her 11th overall career World Cup triumph.
Vlhova made a clean first run down the piste, clocking in at 57.25 seconds.
The course seemed to deteriorate fairly rapidly after her, with none of the next five skiers coming within 1.8 seconds of her time (Wendy Holdener, the fourth skier out of the starting gate, clocked in at 59.06, 1.81s behind).
All eyes were on Shiffrin as the 24-year-old made her way down wearing bib number seven.
But the American, who had crashed in training in Austria earlier in the week, nearly suffered an identical issue early on in her run, managing to just about save it with her left hand, but losing time in the process. Eventually, the World Cup slalom record holder and four-time Zagreb winner crossed the finish line 1.16 seconds behind Vlhova.
Shiffrin won both races, a giant slalom and a slalom, in Lienz, Austria, last week, but coming after a disappointing and surprising 17th place in the Courchevel giant slalom, Shiffrin admitted she took a while to get over the shock result, which she called "appalling".
Austria's Katharina Liensberger overtook Holdener in the second run, guaranteeing herself a second podium in two weeks.
But Shiffrin was in imperious form on her second descent of Crveni Spust, opening her initial 0.83-second lead out to 1.77 seconds before the flat part of the course. With her long-time coach and mother Eileen watching on (after Eileen chose to take a back seat earlier in the season), Shiffrin cruised home easily in a total time of 1:59.29.
That left Vlhova needing to clock in at 1:02.04 or quicker in her second run for the win.
There was a very small error slightly before the flat section from the Slovakian, but she managed to hold her run together and gain time in the final third of the course, extending her first-run lead out to 1.32 seconds and finishing in a combined 1:57.98 for her first win in Zagreb.
"Today I felt really good from the morning and I did finally both runs really perfect," Vlhova said afterwards. "This victory for me is very important because in Zagreb I was always in second place and now finally top."
Speaking about her great rival, she added: "I knew that Miki (Shiffrin), she goes really fast, so what I have to do if I want to win, I have to risk all the time and now finally I did it."