В беседах с Гриневым язвительный Швабрин высмеивает семейство коменданта. Не особо отягченный службой Гринев начинает писать стихи, по которым Швабрин догадывается о его любви к Маше. Он издевается над гриневскими стихами, а в отношении Маши заявляя, что та готова прийти к любому ночью за пару сережек. Между Швабриным и Гриневым возникает ссора, в результате которой Швабрин вызывает Гринева на дуэль. В соответствии с правилами дуэли Гринев пытается пригласить секундантом пожилого прапорщика Ивана Игнатьевича, который от этого приходит в ужас. Чтобы его успокоить, Гринев врет, что помирился со Швабриным. О ссоре становится известно комендантше Василисе Егоровне, которая интересуется ее причинами. Швабрин объясняет ей, что Гринев написал песню, которой он, Швабрин, предпочел свою любимую «Капитанская дочь не ходи гулять в полночь» … На следующее утро Швабрин и Гринев сходятся для поединка и обнажают шпаги, но тут появляется Иван Игнатьевич с инвалидами и конвоирует дуэлянтов к комендантше. Василиса Егоровна стыдит, в основном Гринева, принуждая соперников к примирению. Гринев со Швабриным делают вид, что конфликт исчерпан и целуются в ее присутствии. Чтобы обмануть бдительность комендантши, они решают отложить поединок на несколько дней. Взволнованная известием о несостоявшейся дуэли, Маша рассказывает Гриневу о неудачном сватовстве к ней Швабрина и своем отказе выйти за него замуж. Гриневу становятся понятны подлые мотивы Швабрина, пытавшегося с помощью клеветы отвратить его от дочери коменданта. На другой день Швабрин и Гринев сходятся для поединка один на один, без секундантов. Гринев, которого его гувернер мосье Бопре обучил фехтованию, неожиданно оказывается для Швабрина сильным противником. Но внезапное появление Савельич отвлекает Гринева, и Швабрин наносит ему удар в грудь! Сознание Гринева меркнет…