Alexander Edler and Tanner Pearson scored for the Canucks, and Markstrom made 19 saves.
"All in all, it was definitely a good road game for us, but there were a couple of minutes that we'd like to have back," Pearson said. "That's the way it goes, those minutes can cost you the game. You give [McDavid] a tad bit of ice, he's going to take a mile. It was an unfortunate play, and we were battling back the rest of the game."
Draisaitl scored 5:42 into the first period off a pass from Kassian to give Edmonton a 1-0 lead.
Edler tied the game 1-1 on a redirection in front at 11:58 of the second period, one second after a too many men on the ice penalty against the Oilers expired.
Pearson gave the Canucks a 2-1 lead at 9:41 of the third when he tipped a point shot from Tyler Myers.
"I don't like the end result, but I thought the first eight to 10 minutes of the game was probably our worst, and then we got our feet under us," Vancouver coach Travis Green said. "There is probably a three-minute span in the third I'd like to have back, but for the first road game of the year, we did a lot of good things, and it's disheartening we didn't get a point out of it."
Kassian tied it 2-2 at 10:52 on a shot from the left face-off circle off a cross-ice pass from Draisaitl.