As mentioined, list1 = {{1, -1.1}, {2, -1}, {3, -0.9}, {4, 0}, {10, -0.4}}; list2 = {{2, -0.6}, {3, -0.6}}; Insert[list1, list2, 3] leads to an extra list that OP does not want: (* {{1, -1.1}, {2, -1}, {{2, -0.6}, {3, -0.6}}, {3, -0.9}, {4, 0}, {10, -0.4}} *) That could be fixed by using MapAt[Apply[Sequence], Insert[list1, list2, 3], 3] (* {{1, -1.1}, {2, -1}, {2, -0.6}, {3, -0.6}, {3, -0.9}, {4, 0}, {10, -0.4}} *) but Insert[list1, Sequence@@list2, 3] leads to an error [![error][1]][1] because of the order of the evaluation, that is, applying sequence works when the list is already made but not as an argument to `Insert`. Sometimes problems with the order of evaluation can be solved elegantly by using pure functions. For example: Insert[list1, #, 3] & @@ list2 (* {{1, -1.1}, {2, -1}, {2, -0.6}, {3, -0.9}, {4, 0}, {10, -0.4}} *) Another option that also works with pure functions is : Sequence @@ list2 // Insert[list1, #, 3] & [1]: https://i.sstatic.net/97h50.png