The Netherlands' Anouk Dekker and Lineth Beerensteyn breached Canada's normally rock-solid defence with second-half goals to secure a 2-1 win that earned them top spot in Group E at the Women's World Cup on Thursday.
Dekker and Beerensteyn scored either side of Christine Sinclair's goal to put the Dutch on a maximum nine points with Canada, who had not conceded in their previous two games, finishing second on six.
The Netherlands will face Japan in the last 16 while Canada will take on either the United States or Sweden.
Both teams had already qualified before kickoff and they will be joined in the knockouts by Cameroon, who finished with three points and advanced as one of the best third-placed teams thanks to a last-gasp 2-1 win against New Zealand.
"We played well as a team, adapted well, and the performance was great. In 2019, Canada had conceded just one goal before today," Netherlands coach Sarina Wiegman told a news conference.
"So to score two goals in one game is fantastic. Now I hope we'll play well against Japan too. We played against them in the last 16 four years ago and know what they're all about.
"They're a very disciplined team and we expect the same again. But the Dutch team has made great strides since then."
Canada coach Kenneth Heiner-Moller remained optimistic for the rest of the tournament.
"We were a bit tighter in the second half but they took advantage well of the gaps we did leave," he said.
"But we won't mind playing anyone in this tournament. If we play to our best, we can beat anyone."
The Oranje dominated but failed to break the deadlock in a tightly contested first half against a side who had conceded only one goal in their last 10 matches.
But Dekker rose higher than everyone to head home an inswinging free kick and open the scoring in the 54th minute.
Canada reacted swiftly through Sinclair, who equalised with a cool finish from Ashley Lawrence's pass on the hour.
The Dutch, however, had more firepower and it told 15 minutes from time as substitute Beerensteyn latched onto a Desiree van Lunteren cross on her first touch to score the tournament's 100th goal.