• Using the parent axis when extracting values from XML is not good for performance. 
    Use an extra cross apply instead.

    select P.X.value('(PackID/text())[1]','int') as PackID,
       I.X.value('(ItemNumber/text())[1]','int') as ItemNumber,
       I.X.value('(Qty/text())[1]','int') as Qty
    from @packXML.nodes('/Pack') as P(X)
    cross apply P.X.nodes('Item') as I(X);

    For more info on the problem with the parent axis you can have a look at this question on StackOverflow:
    Cross apply xml query performs exponentially worse as xml document grows
    .