<?xml version="1.0" encoding="utf-8"?>
<InstanceReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>2.0.0.10</Version>
  <hasSegments>false</hasSegments>
  <ReportName>Stock Option Purchase</ReportName>
  <ReportLongName>006020 - Disclosure - Stock Option Purchase</ReportLongName>
  <DisplayLabelColumn>true</DisplayLabelColumn>
  <ShowElementNames>false</ShowElementNames>
  <RoundingOption />
  <HasEmbeddedReports>false</HasEmbeddedReports>
  <Columns>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>1</Id>
      <Labels>
        <Label Id="1" Label="3 Months Ended" />
        <Label Id="2" Label="May. 02, 2010" />
      </Labels>
      <CurrencyCode>usd</CurrencyCode>
      <CurrencySymbol>$</CurrencySymbol>
      <FootnoteIndexer />
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>u000</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>u001</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>u002</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
    </Column>
  </Columns>
  <Rows>
    <Row>
      <Id>2</Id>
      <Label>Notes to Financial Statements [Abstract]</Label>
      <Level>0</Level>
      <ElementName>nvda_NotesToFinancialStatementsAbstract</ElementName>
      <ElementPrefix>nvda</ElementPrefix>
      <IsBaseElement>false</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole />
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>3</Id>
      <Label>Stock Option Purchase</Label>
      <Level>1</Level>
      <ElementName>nvda_StockOptionPurchaseTextBlock</ElementName>
      <ElementPrefix>nvda</ElementPrefix>
      <IsBaseElement>false</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>Disclosure describing the noncash expense that accounts for the value of stock option purchase.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole>terselabel</PreferredLabelRole>
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText>&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman"&gt;Note 2 &amp;#8211; Stock Option Purchase&lt;/font&gt;&lt;/div&gt;&lt;div style="DISPLAY: block; TEXT-INDENT: 0pt"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 18pt; MARGIN-RIGHT: 0pt" align="justify"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman"&gt;During the three months ended April 26, 2009,&amp;#160;we completed a cash tender offer for certain employee stock options. The tender offer applied to outstanding stock options held by employees with an exercise price equal to or greater than $17.50 per share. None of the non-employee members of our Board of Directors or our officers who file reports under Section&amp;#160;16(a) of the Securities Exchange Act of 1934, as amended, or the Securities Exchange Act, were eligible to participate in the tender offer.&amp;#160;All eligible options with exercise prices equal to or greater than $17.50 per share but less than $28.00 per share were eligible to receive a cash payment of $3.00 per option in exchange for the cancellation of the eligible option. All eligible options with exercise prices equal to or greater than $28.00 per share were eligible to receive a cash payment of $2.00 per option in exchange for the cancellation of the eligible option.&lt;/font&gt;&lt;/div&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="justify"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman"&gt;&lt;/font&gt;&amp;#160;&lt;/div&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 18pt; MARGIN-RIGHT: 0pt" align="justify"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman"&gt;Our consolidated statement of operations for the&amp;#160;three months ended April 26, 2009 includes stock-based compensation charges related to the stock option purchase (in thousands):&lt;/font&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;table style="FONT-SIZE: 10pt; FONT-FAMILY: times new roman" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tr&gt;&lt;td valign="bottom" width="88%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="9%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cceeff"&gt;&lt;td valign="bottom" width="88%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;Cost of revenue&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;$&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="bottom" width="9%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="right"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;11,412&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="white"&gt;&lt;td valign="bottom" width="88%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;Research and development&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td valign="bottom" width="9%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="right"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;90,456&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cceeff"&gt;&lt;td style="PADDING-BOTTOM: 2px" valign="bottom" width="88%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;Sales, general and administrative&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="PADDING-BOTTOM: 2px" valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: black 2px solid" valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: black 2px solid" valign="bottom" width="9%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="right"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;38,373&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="PADDING-BOTTOM: 2px" valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="white"&gt;&lt;td style="PADDING-BOTTOM: 4px" valign="bottom" width="88%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;Total&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="PADDING-BOTTOM: 4px" valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: black 4px double" valign="bottom" width="1%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="left"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160;$&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: black 4px double" valign="bottom" width="9%"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt"&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 0pt; MARGIN-RIGHT: 0pt" align="right"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;140,241&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="PADDING-BOTTOM: 4px" valign="bottom" width="1%"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: times new roman"&gt;&amp;#160; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="DISPLAY: block; TEXT-INDENT: 0pt"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 18pt; MARGIN-RIGHT: 0pt" align="justify"&gt;&lt;font style="DISPLAY: inline; FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman"&gt;&amp;#160;&amp;#160;A total of 28.5 million options were tendered under the offer for an aggregate cash purchase price of $78.1 million, which was paid in exchange for the cancellation of the eligible options.&amp;#160;&amp;#160;As a result of the tender offer, we incurred a charge of $140.2 million consisting of $124.1 million related to the remaining unamortized stock based compensation expense associated with the unvested portion of the options tendered in the offer, $11.6 million related to stock-based compensation expense resulting from amounts paid in excess of the fair value of the underlying options, plus $4.5 million related to associated payroll taxes, professional fees and other costs.&lt;/font&gt;&lt;/div&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 18pt; MARGIN-RIGHT: 0pt" align="justify"&gt;&amp;#160;&lt;/div&gt;&lt;div style="DISPLAY: block; MARGIN-LEFT: 0pt; TEXT-INDENT: 18pt; MARGIN-RIGHT: 0pt" align="justify"&gt;&amp;#160;&lt;/div&gt;&lt;div style="DISPLAY: block; TEXT-INDENT: 0pt"&gt;&lt;br /&gt;&lt;/div&gt;</NonNumbericText>
          <NonNumericTextHeader>Note 2 &amp;#8211; Stock Option PurchaseDuring the three months ended April 26, 2009,&amp;#160;we completed a cash tender offer for certain employee stock options. The</NonNumericTextHeader>
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDefenition>Disclosure describing the noncash expense that accounts for the value of stock option purchase.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
  </Rows>
  <Footnotes />
  <ComparabilityReport>false</ComparabilityReport>
  <NumberOfCols>1</NumberOfCols>
  <NumberOfRows>2</NumberOfRows>
  <HasScenarios>false</HasScenarios>
  <MonetaryRoundingLevel>UnKnown</MonetaryRoundingLevel>
  <SharesRoundingLevel>UnKnown</SharesRoundingLevel>
  <PerShareRoundingLevel>UnKnown</PerShareRoundingLevel>
  <HasPureData>false</HasPureData>
  <SharesShouldBeRounded>true</SharesShouldBeRounded>
</InstanceReport>
